shuffle funkar inte

PHP

1 svar · 151 visningar · startad av Asterix

Medlem sedan dec. 1999483 inlägg
Trådstart#1

Jag har ett skript som använder sig av shuffle men av någon konstig anledning så blir det inte riktigt slumpmässigt. Kör jag programmet 10000 och jag har 10 alternativ borde varje alternativ komma först 1000 gånger men så blir det inte. Därför gjorde jag ett testskript:

<?
for ($_i = 0; $_i < 10; $_i++) {
  $_temp[$_i] = 0;
}

for ($_i = 0; $_i < 10000; $_i++) {
  $_a = range (0,9);
  srand((double)microtime()*1000000);
  shuffle ($_a);
  $_temp[$_a[0]]++;
}

for ($_i = 0; $_i < 10; $_i++) {
  echo $_temp[$_i] . "<br>";
}
?>

Det kan vara koden som är fel, men säg till om ni förstår vad som inte funkar. Skriptet finns här: http://www.webhallen.se/admin/random.php

Medlem sedan juni 20001 521 inlägg
#2

Testa med

<?

srand((double)microtime()*1000000);

for ($_i = 0; $_i < 10; $_i++) {
$_temp[$_i] = 0;
}
for ($_i = 0; $_i < 10000; $_i++) {
$_a = range (0,9);
shuffle ($_a);
$_temp[$_a[0]]++;
}

for ($_i = 0; $_i < 10; $_i++) {
echo $_temp[$_i] . "<br>";
}
?>

istället. Annars kör du srand flera gånger, och då kan det gå åt skogen.

257 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)