>>>>>>>>>>>>>>>>>>>>>>>>>Vertel Microsoft over dit probleem <<<<<<<<<<<<<<<<<<<<<<<<<
Verwijderd
Stel je weet wanneer 4 en 5 niet mee mogen doen. Maak dan een array met de te kiezen waarden en randomize de onderdelen uit het array bv:
N-joy
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| Dim x(1 to 6) as Integer Dim Waarde as Integer x(1)=1 x(2)=2 x(3)=3 x(4)=6 x(5)=4 x(6)=5 '// nu kiezen uit waarden waar 4 en 5 niet meetellen Waarde = x(Int((4 * Rnd) + 1)) '// nu kiezen uit waarden waar 4 en 5 wel meetellen Waarde = x(Int((6 * Rnd) + 1)) |
N-joy
een lijst of array oid met
[1,2,3,4,5,6]
getallen die er niet in mogen haal je er uit.
[1,2,3,4,5,6] - [4,5] = [1,2,3,6]
dan
random(4)+1 en het zoveelste getal neem je uit [1,2,3,6] lijstje.
Misschien dat er een nettere manier is
[1,2,3,4,5,6]
getallen die er niet in mogen haal je er uit.
[1,2,3,4,5,6] - [4,5] = [1,2,3,6]
dan
random(4)+1 en het zoveelste getal neem je uit [1,2,3,6] lijstje.
Misschien dat er een nettere manier is
Ok, wat jullie zeggen is inderdaad wel goed. Maar ik heb het blijkbaar niet helemaal goed uitgelegt.
Ik heb als voorbeeld genomen om 4 en 5 er uit telaten. Maar in het programma waar ik het in gebruik is het niet altijd 4 en 5.
In het begin doen ze allemaal mee. En elke keer worden er meer getallen uitgesloten.
[background info]
De code komt uit een projectje van me, het maakt onderdeel uit van Master Mind. De getallen stellen kleuren voor. Het is de bedoeling dat de computer de code kraakt, aan de hand van de getallen die nog mee doen (alles behalve 4 en 5, uit het voorbeeld) moet hij dan een volgende beslissing nemen.
[/background info]
Ik heb als voorbeeld genomen om 4 en 5 er uit telaten. Maar in het programma waar ik het in gebruik is het niet altijd 4 en 5.
In het begin doen ze allemaal mee. En elke keer worden er meer getallen uitgesloten.
[background info]
De code komt uit een projectje van me, het maakt onderdeel uit van Master Mind. De getallen stellen kleuren voor. Het is de bedoeling dat de computer de code kraakt, aan de hand van de getallen die nog mee doen (alles behalve 4 en 5, uit het voorbeeld) moet hij dan een volgende beslissing nemen.
[/background info]
>>>>>>>>>>>>>>>>>>>>>>>>>Vertel Microsoft over dit probleem <<<<<<<<<<<<<<<<<<<<<<<<<
Ik prog het effe in C++:
Je kiest dus elke keer een random getal en vervolgens flikker je die uit je array met getallen en schuif je alles na dat getal een plaatsje op en verlaag je de lengte van de array zodat je weer opnieuw kan selecteren. (met hetzelfde stukje code...)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| int[] getallen = {1,2,3,4,5,6};
int lengte = 6;
int index = 0;
int teBewerkenWaarde = 0;
...
...
...
//Genereer een random getal van maximale groote lengte...
//Da's dus bij een float random met bereik [0.0 <-> 1.0]:
index = (int)floor(random * lengte);
//Doe wat je wilt met de waarde op getallen[index]
teBewerkenWaarde = getallen[index];
for (i = index; i < lengte-1; i++)
{
getallen[i] = getallen[i+1];
}
lengte = lengte - 1; |
Je kiest dus elke keer een random getal en vervolgens flikker je die uit je array met getallen en schuif je alles na dat getal een plaatsje op en verlaag je de lengte van de array zodat je weer opnieuw kan selecteren. (met hetzelfde stukje code...)
Je maakt een Array aan waarin je de getallen neerzet die je al gebruikt hebt. Daarna controleer na elk random getal of deze al bestaat.
Zie code hieronder:
Veel succes!
Zie code hieronder:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| Sub RandomReeks()
' Geeft een reeks getallen in een willekeurige volgorde
ondergrens = 4
bovengrens = 10
Reeks = bovengrens - ondergrens + 1
ReDim Getallen(Reeks)
For i = 1 To (Reeks)
GetalOk = False
Do Until GetalOk
GetalOk = True
Getal = Int(((Reeks) * Rnd) + 1) + ondergrens - 1
For j = 1 To i
If Getallen(j) = Getal Then GetalOk = False
Next j
Loop
Getallen(i) = Getal
MsgBox (Getal)
Next i
End Sub |
Veel succes!
He does fit the profile perfectly. He's intelligent, but an under-achiever; alienated from his parents; has few friends. Classic case for recruitment by the Soviets.
Bedankt, werkt perfect!Op dinsdag 02 oktober 2001 01:19 schreef Kappie het volgende:
Je maakt een Array aan waarin je de getallen neerzet die je al gebruikt hebt. Daarna controleer na elk random getal of deze al bestaat.
Zie code hieronder:
code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Sub RandomReeks() ' Geeft een reeks getallen in een willekeurige volgorde ondergrens = 4 bovengrens = 10 Reeks = bovengrens - ondergrens + 1 ReDim Getallen(Reeks) For i = 1 To (Reeks) GetalOk = False Do Until GetalOk GetalOk = True Getal = Int(((Reeks) * Rnd) + 1) + ondergrens - 1 For j = 1 To i If Getallen(j) = Getal Then GetalOk = False Next j Loop Getallen(i) = Getal MsgBox (Getal) Next i End Sub
Veel succes!
>>>>>>>>>>>>>>>>>>>>>>>>>Vertel Microsoft over dit probleem <<<<<<<<<<<<<<<<<<<<<<<<<
Toch nog ff een klein vraagje, er staat:Op dinsdag 02 oktober 2001 01:19 schreef Kappie het volgende:
Je maakt een Array aan waarin je de getallen neerzet die je al gebruikt hebt. Daarna controleer na elk random getal of deze al bestaat.
Zie code hieronder:
code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Sub RandomReeks() ' Geeft een reeks getallen in een willekeurige volgorde ondergrens = 4 bovengrens = 10 Reeks = bovengrens - ondergrens + 1 ReDim Getallen(Reeks) For i = 1 To (Reeks) GetalOk = False Do Until GetalOk GetalOk = True Getal = Int(((Reeks) * Rnd) + 1) + ondergrens - 1 For j = 1 To i If Getallen(j) = Getal Then GetalOk = False Next j Loop Getallen(i) = Getal MsgBox (Getal) Next i End Sub
Veel succes!
Wat wordt er dan gedaan totdat getalok???Do Until GetalOk
De code werkt wel, maar ik snap niet helemaal wat er staat. Als je er van maakt do until getalok=false dan krijg je gewoon 6 popups met niks er in.
Zet ik er neer getalok = truem, dan krijg ik hetzelfde resultaat als zonder = true.
Dus, wat staat er nou precies?? zou je dat nog ff kunnen antwoorden?
>>>>>>>>>>>>>>>>>>>>>>>>>Vertel Microsoft over dit probleem <<<<<<<<<<<<<<<<<<<<<<<<<
Verwijderd
code:
1
2
3
4
5
| GetalOk = True
Getal = Int(((Reeks) * Rnd) + 1) + ondergrens - 1
For j = 1 To i
If Getallen(j) = Getal Then GetalOk = False
Next j |
Dit gebeurt er
Pagina: 1