Doet iets met Cloud (MS/IBM)
Dit wat hieronder staat heeft niks te maken met jou vraag.. ik vind het alleen zonde om weg te halen:
De srand() functie moet je eerst gebruiken om de randomizer engine te voeden.
Maar het schijnt beter te zijn om de mt_srand functie in combinatie met de mt_rand functie te gebruiken.
En dan nog even een keurig voorbeeldje erbij:
De srand() functie moet je eerst gebruiken om de randomizer engine te voeden.
Maar het schijnt beter te zijn om de mt_srand functie in combinatie met de mt_rand functie te gebruiken.
En dan nog even een keurig voorbeeldje erbij:
PHP:
1
2
3
4
5
| <? // seed with microseconds since last "whole" second mt_srand ((double) microtime() * 1000000); $randval = mt_rand(); ?> |
|_____vakje______|
random betekend niet automatisch altijd anders
als jij random een getal pakt uit de lijst 1,2 reken maar dat jij dubbele krijgt
.. hoe vaker je het doet en hoe kleiner je lijst is hoe meer dubbele je krijgt ...
als jij random een getal pakt uit de lijst 1,2 reken maar dat jij dubbele krijgt
er zit geen fout in, maar het is random.. dus met 10 cijfers heb je 1 op 10 kans op een getal, als je dat 5 keer doet, heb je grote kans dat je 2 keer het zelfde getal krijgt ja..Op vrijdag 22 juni 2001 20:47 schreef D2k het volgende:
PHP:
1 2 3 4 5 6 7 <? for($i=1;$i<=5;$i++) { $bomnr=rand(1,9); //en dan wat acties } ?>
maar hoe voor kom ik nou dat ik dit krijg
2,5,2,5,3
oftwel meerdere gelijke getallen omdat het een klein bereik is voor de random functie
heb het al geprobeerd met query's en met een array geprobeerd maar krijg het niet voor elkaar
wie ziet de fout(en)?
[edit] Grum, kap noau!
en dat wilde ik nou juist voorkomenOp vrijdag 22 juni 2001 20:49 schreven Grum_ en timpie:
reken maar dat jij dubbele krijgt
Doet iets met Cloud (MS/IBM)
En dan nu een beter antwoord
$uitkomst[1] t/m $uitkomst[5] bevatten 5 unieke getallen.
Ik heb het niet getest, fouten voorbehouden dus
PHP:
1
2
3
4
5
6
7
8
9
| <? $getalletjes = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); for ($i = 1; $i <= 5; $i++) { mt_srand ((double) microtime() * 1000000); $randval = mt_rand(0, count($getalletjes) - 1); $uitkomst[] = $getalletjes[$randval]; } ?> |
$uitkomst[1] t/m $uitkomst[5] bevatten 5 unieke getallen.
Ik heb het niet getest, fouten voorbehouden dus
|_____vakje______|
doet het perfectOp vrijdag 22 juni 2001 20:54 schreef CyberSnooP het volgende:
En dan nu een beter antwoord
PHP:
1 2 3 4 5 6 7 8 9 <? $getalletjes = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); for ($i = 1; $i <= 5; $i++) { mt_srand ((double) microtime() * 1000000); $randval = mt_rand(0, count($getalletjes) - 1); $uitkomst[] = $getalletjes[$randval]; } ?>
$uitkomst[1] t/m $uitkomst[5] bevatten 5 unieke getallen.
Ik heb het niet getest, fouten voorbehouden dus
damn dat ik dat niet zelf kon bedenken
Doet iets met Cloud (MS/IBM)
eerste wat ik terugkrijg is:Op vrijdag 22 juni 2001 20:54 schreef CyberSnooP het volgende:
En dan nu een beter antwoord
PHP:
1 2 3 4 5 6 7 8 9 <? $getalletjes = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); for ($i = 1; $i <= 5; $i++) { mt_srand ((double) microtime() * 1000000); $randval = mt_rand(0, count($getalletjes) - 1); $uitkomst[] = $getalletjes[$randval]; } ?>
$uitkomst[1] t/m $uitkomst[5] bevatten 5 unieke getallen.
Ik heb het niet getest, fouten voorbehouden dus
0 : 8
1 : 8
2 : 8
3 : 8
4 : 8
ik krijg ook nog steeds dubbeleOp vrijdag 22 juni 2001 21:00 schreef Timpie2000 het volgende:
[..]
eerste wat ik terugkrijg is:
0 : 8
1 : 8
2 : 8
3 : 8
4 : 8
Doet iets met Cloud (MS/IBM)
Nog steeds ongetest, maar i.i.g. super stomme bug gefixt:
$uitkomst[1] t/m $uitkomst[5] bevatten 5 unieke getallen.
WERKT NOG NIET
PHP:
1
2
3
4
5
6
7
8
9
10
11
| <? $getalletjes = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); mt_srand ((double) microtime() * 1000000); for ($i = 1; $i <= 5; $i++) { $randval = mt_rand(0, count($getalletjes) - 1); $uitkomst[] = $getalletjes[$randval]; unset($getalletjes[$randval]); } ?> |
$uitkomst[1] t/m $uitkomst[5] bevatten 5 unieke getallen.
WERKT NOG NIET
|_____vakje______|
beter maar er zitten soms lege plekken in?Op vrijdag 22 juni 2001 21:06 schreef CyberSnooP het volgende:
Nog steeds ongetest, maar i.i.g. super stomme bug gefixt:
PHP:
1 2 3 4 5 6 7 8 9 10 11 <? $getalletjes = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); mt_srand ((double) microtime() * 1000000); for ($i = 1; $i <= 5; $i++) { $randval = mt_rand(0, count($getalletjes) - 1); $uitkomst[] = $getalletjes[$randval]; unset($getalletjes[$randval]); } ?>
$uitkomst[1] t/m $uitkomst[5] bevatten 5 unieke getallen.
Array ( [0] => 2 [1] => 5 [2] => [3] => 4 [4] => 6 )
Doet iets met Cloud (MS/IBM)
ik ga toch zeggen dattet niet werktOp vrijdag 22 juni 2001 20:57 schreef D2k het volgende:
[..]
doet het perfect
damn dat ik dat niet zelf kon bedenken
heb ik ook gezegdOp vrijdag 22 juni 2001 21:12 schreef Grum_ het volgende:
[..]
ik ga toch zeggen dattet niet werkt
de eerste 2x was goed
daarna niet meer
Doet iets met Cloud (MS/IBM)
Ik voel me ongeloofelijk stom, maar ik zoek nog ff iets om het te fixen.
|_____vakje______|
niet doen, jezelf stom vindenOp vrijdag 22 juni 2001 21:14 schreef CyberSnooP het volgende:
Ik voel me ongeloofelijk stom, maar ik zoek nog ff iets om het te fixen.
ik kon het ook niet
Doet iets met Cloud (MS/IBM)
zal ik dan maar de oplossing geven ? 
dit zou moeten werken .. ik ga et ff testen laat het zo wel weten
PHP:
1
2
3
4
5
6
7
8
| <? $array = array(1,2,3,4,5,6,7,8,9,10); for($i=0;$i<5;$i++) { $val = (array_splice($array,intval(rand(0,count($array)-1)),1)); print "$val[0] "; } ?> |
dit zou moeten werken .. ik ga et ff testen laat het zo wel weten
mist al een {Op vrijdag 22 juni 2001 21:15 schreef Grum_ het volgende:
zal ik dan maar de oplossing geven ?
PHP:
1 2 3 4 5 6 <? $lijst = array(1,2,3,4,5,6,7,8,9,10); for($i=0;$i<5;$i++) print array_splice($lijst,intval(rand(0,count($array)-1),1); } ?>
dit zou moeten werken .. ik ga et ff testen laat het zo wel weten
Doet iets met Cloud (MS/IBM)
Zo... Dit werkt i.i.g. ook
Veel plezier ermee.
PHP:
1
2
3
4
5
| <? $uitkomst = range(1,10); shuffle($uitkomst); $uitkomst = array_slice($uitkomst, 0, 5); ?> |
Veel plezier ermee.
|_____vakje______|
hij klopt nu
.. zoals ik zei teste ik em eerst nog ff .. maar me kcma doet een beetje brakjes
(der was nog wel meer mis mee 
nog een missend )'tje etc etc etc
nog een missend )'tje etc etc etc
deze doet het volgens mijOp vrijdag 22 juni 2001 21:15 schreef Grum_ het volgende:
zal ik dan maar de oplossing geven ?
PHP:
1 2 3 4 5 6 7 8 <? $array = array(1,2,3,4,5,6,7,8,9,10); for($i=0;$i<5;$i++) { $val = (array_splice($array,intval(rand(0,count($array)-1)),1)); print "$val[0] "; } ?>
dit zou moeten werken .. ik ga et ff testen laat het zo wel weten
Doet iets met Cloud (MS/IBM)
komt eigelijk op hezelfde neer jah ... alleen het is nog maar de vraag hoe 'random' shuffle isOp vrijdag 22 juni 2001 21:18 schreef CyberSnooP het volgende:
PHP:
1 2 3 4 5 <? $uitkomst = range(1,10); shuffle($uitkomst); $uitkomst = array_slice($uitkomst, 0, 5); ?>
Volgens de ChangeLog is die nog al eens aangepast (dacht ik) dus het zal wel werken.Op vrijdag 22 juni 2001 21:21 schreef Grum_ het volgende:
alleen het is nog maar de vraag hoe 'random' shuffle is
|_____vakje______|
Shuffle() is net zo random als rand() maar wel eerst voor het zaadgetalletje zorgen natuurlijk.Op vrijdag 22 juni 2001 21:21 schreef Grum_ het volgende:
[..]
komt eigelijk op hezelfde neer jah ... alleen het is nog maar de vraag hoe 'random' shuffle is
PHP:
1
2
3
| <? mt_srand ((double) microtime() * 1000000); ?> |
Verwijderd
Hint: vervang de array getalletjes met een nieuwe waar de al bepaalde waarde niet meer in voorkomt.
<?$getalletjes = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
for ($i = 1; $i <= 5; $i++) {
mt_srand ((double) microtime() * 1000000);
$randval = mt_rand(0, count($getalletjes) - 1);
$uitkomst[] = $getalletjes[$randval];
******
hiet moet de array getalletjes opnieuw gevuld worden met alle waarden van de vorige behalve het item getalletjes[$randval].
******
}
?>
<?$getalletjes = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
for ($i = 1; $i <= 5; $i++) {
mt_srand ((double) microtime() * 1000000);
$randval = mt_rand(0, count($getalletjes) - 1);
$uitkomst[] = $getalletjes[$randval];
******
hiet moet de array getalletjes opnieuw gevuld worden met alle waarden van de vorige behalve het item getalletjes[$randval].
******
}
?>
ik wou er eerst nix van zeggenOp vrijdag 22 juni 2001 22:01 schreef Grum_ het volgende:
[..]
fijn dat je de thread leest ...
![]()
![]()
![]()
![]()
maar ben het met je eens
Doet iets met Cloud (MS/IBM)
Ik heb eigenlijk nog een vraag.. Kan ik geen element wissen uit $getalletjes? Dus dat de keys 6->5 en 7->6 en 8->7 etc.. gaan als ik de 5 verwijder?? Dan zou mijn eerste dingetje tenminste echt werken.
|_____vakje______|
Ik dacht niet dat daar een functie voor was. Dan zou je daar een funcie voor moeten schrijven. Maar het kan natuurlijk wel +Op zaterdag 23 juni 2001 10:38 schreef CyberSnooP het volgende:
Ik heb eigenlijk nog een vraag.. Kan ik geen element wissen uit $getalletjes? Dus dat de keys 6->5 en 7->6 en 8->7 etc.. gaan als ik de 5 verwijder?? Dan zou mijn eerste dingetje tenminste echt werken.
Ander ideetje: werk ipv met een array met objecten en pointers...Op zaterdag 23 juni 2001 10:38 schreef CyberSnooP het volgende:
Ik heb eigenlijk nog een vraag.. Kan ik geen element wissen uit $getalletjes? Dus dat de keys 6->5 en 7->6 en 8->7 etc.. gaan als ik de 5 verwijder?? Dan zou mijn eerste dingetje tenminste echt werken.
Creëer voor elk random getal een object en zo'n object bevat dan:
1) de (random) waarde
2) een pointer naar het volgende object
Zodra je dan er 1 uit wil wissen pak je het object ervoor en dat verwijs je naar het object erna.
Ik weet niet of dit ook onder Php voor elkaar te krijgen valt, maar onder java lukte dit wel...
Dat lijkt me een typische JAVA oplossing :-) Ik heb weinig ervaring met Java, maar toch. In PHP is het een wat minder success dat OO+Pointers en het lijkt me een beetje overkill m.b.t. dit topic.
Maar ik snap je methode nog niet 100%, want hoe raadpleeg ik dan object nummer $x? Moet ik dan begin bij het eerste object en dan $x-maal naar het volgende object gaan (d.m.v. de pointer)
Maar ik snap je methode nog niet 100%, want hoe raadpleeg ik dan object nummer $x? Moet ik dan begin bij het eerste object en dan $x-maal naar het volgende object gaan (d.m.v. de pointer)
|_____vakje______|
Pagina: 1