webForumDet fria alternativet

shuffle funkar inte

PHPur PHP

1 svar · 145 visningar · startad av Asterix

Medlem sedan dec. 1999483 inlägg
Frågan#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

------------------
/Emil Hesslow

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.

------------------
Gislaved.net
"Tänk på vad du säger så att du inte säger vad du tänker."

124 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
121 ms — hämta tråd, inlägg och bilagor (db)