Thread View: be.comp.programming
3 messages
3 total messages
Started by Digibyte
Sun, 23 Nov 2003 17:42
[VB6] Random getallen (integers) uit rij kiezen
Author: Digibyte
Date: Sun, 23 Nov 2003 17:42
Date: Sun, 23 Nov 2003 17:42
17 lines
1521 bytes
1521 bytes
Hoe kan ik het best het volgende programmeren: Ik moet een willekeurig aantal getallen kiezen (vb. 10) uit een rij getallen die optelt van 0 tot x. (vb. 0, 1, 2, 3, 4, 5, 6, ..., 99) Ik heb dit al gevonden om 1 getal eruit te halen: Randomize randomValue = Int(100 * Rnd) Maar nu weet ik niet hoe ik het tweede getal er moet uithalen. Mag dus niet hetzelfde zijn als het vorige getrokken getal. En de kans om ieder getal te nemen moet even groot zijn. Ik kan dus niet zeggen dat als het getal al getrokken is, plus 1 te doen. Kan iemand me tips geven of me verder helpen? Alvast bedankt! Greetz ;) Digibyte
Re: [VB6] Random getallen (integers) uit rij kiezen
Author: Ares Lagae
Date: Sun, 23 Nov 2003 20:35
Date: Sun, 23 Nov 2003 20:35
46 lines
2422 bytes
2422 bytes
"Digibyte" <digibyte@pieter.verhaeghe-textiel.be> wrote in message
news:3fc0f172$0$28453$ba620e4c@reader0.news.skynet.be...
> Hoe kan ik het best het volgende programmeren:
> Ik moet een willekeurig aantal getallen kiezen (vb. 10) uit een rij
getallen
> die optelt van 0 tot x. (vb. 0, 1, 2, 3, 4, 5, 6, ..., 99)
>
> Ik heb dit al gevonden om 1 getal eruit te halen:
> Randomize
> randomValue = Int(100 * Rnd)
>
Als je rij getallen niet supergroot is, en in de veronderstelling dat je
geen 2 keer eenzelfde getal wil, kan je het eenvoudig als volgt doen:
c++ code, want ik ken geen VB (en wil ook niet :-)
/* maak array 0, 1, 2, ... */
int array[100];
for (unsigned int i = 0; i < 100; i++)
{
array[i] = i;
}
/* randomize */
for (unsigned int i = 0; i < 100; i++)
{
for (unsigned int j = 0; j < 100; j++)
{
if (rand() < (RAND_MAX / 2))
{
std::swap(array[i], array[j]);
}
}
}
de taak van
if (rand() < (RAND_MAX / 2))
is dat de swap met ongeveer 50 % kans uitgevoerd wordt.
dan geeft array[0] ... array[n-1] je de eerste n willekeurige getallen
(PS: eigenlijk is deze vraag niet VB6 specific)
Groetjes,
Ares Lagae
Re: [VB6] Random getallen (integers) uit rij kiezen
Author: Ares Lagae
Date: Sun, 23 Nov 2003 20:42
Date: Sun, 23 Nov 2003 20:42
34 lines
2420 bytes
2420 bytes
"Digibyte" <digibyte@pieter.verhaeghe-textiel.be> wrote in message news:3fc0f172$0$28453$ba620e4c@reader0.news.skynet.be... > Hoe kan ik het best het volgende programmeren: > Ik moet een willekeurig aantal getallen kiezen (vb. 10) uit een rij getallen > die optelt van 0 tot x. (vb. 0, 1, 2, 3, 4, 5, 6, ..., 99) > > Ik heb dit al gevonden om 1 getal eruit te halen: > Randomize > randomValue = Int(100 * Rnd) > > Maar nu weet ik niet hoe ik het tweede getal er moet uithalen. Mag dus niet > hetzelfde zijn als het vorige getrokken getal. En de kans om ieder getal te > nemen moet even groot zijn. Ik kan dus niet zeggen dat als het getal al > getrokken is, plus 1 te doen. > nog een andere methode: rejection sampling, geschikt voor als het aantal mogelijke getallen N groot is, en het aantal getallen dat je eruit wil trekken redelijk klein is ten opzichte van N - houd alle REEDS GETROKKEN getallen bij in een array A - nieuw getal bepalen: 1) bepaal een willekeurig getal G in 0...N (daarvoor hoef je niet de array met alle mogelijke getallen bij te houden, gewoon een random reel getal in 0..1 * N doen) 2) indien G in A, ga naar 1) 3) voeg G bij A Groetjes, Ares Lagae
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads