| FAQ |
| Kalender |
|
|
#1 | |||
|
||||
|
Mycket flitig postare
|
Jag ska få fram fem olika tal mellan 1 och 29. Dvs ett tal får inte förekomma två gånger.
Använder nu följande metod. Men den känns lite krånglig. Finns det någon bättre variant? $first = rand(1,29); do { $second = rand(1,29); } while($first==$second); do { $third = rand(1,29); } while($third==$first || $third==$second); do { $fourth = rand(1,29); } while($fourth==$first || $fourth==$second || $fourth==$third); do { $fifth = rand(1,29); } while($fifth==$first || $fifth==$second || $fifth==$third || $fifth==$fourth); |
|||
|
|
Svara med citat
|
|
|
#2 | ||
|
|||
|
Har WN som tidsfördriv
|
1 - skapa en array med de olika värdena i
kör rand() på arrayen |
||
|
|
Svara med citat
|
|
|
#3 | |||
|
||||
|
Mycket flitig postare
|
Citat:
Det var exakt något sådant jag letade efter! Tack så mycket! |
|||
|
|
Svara med citat
|
|
|
#4 | |||
|
||||
|
Mycket flitig postare
|
Tänkte jag kunde bidra med min färdiga kod:
$input = array("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29"); $rand_keys = array_rand($input, 5); print $input[$rand_keys[0]]; print $input[$rand_keys[1]]; print $input[$rand_keys[2]]; print $input[$rand_keys[3]]; print $input[$rand_keys[4]]; |
|||
|
|
Svara med citat
|
|
|
#5 | ||
|
|||
|
Medlem
|
<pre>
<?php $array = array(); for ($i=0; $i < 5; $i++) { do { $num = mt_rand(1,29); } while (in_array($num, $array)); $array[] = $num; } print_r($array); ?> </pre> |
||
|
|
Svara med citat
|
|
|
#6 | |||
|
||||
|
Mycket flitig postare
|
Citat:
Den varianten tar en tredjedel kortare tid! Variant 1 tid: 0.00029587745666504 Variant 2 tid: 0.00020003318786621 Någon som har ännu bättre idé? (vi kanske ska starta en tävling här?) |
|||
|
|
Svara med citat
|
|
|
#7 | |||
|
||||
|
Flitig postare
|
Tidsskillnaden beror nog främst på att du kör print fem gånger i den första varianten, och bara ett enda print_r i den andra.
|
|||
|
|
Svara med citat
|
|
|
#8 | ||
|
|||
|
Klarade millennium-buggen
|
Mitt bidrag:
Kod:
$map=array();
while(array_sum($map)<5) {
$map{mt_rand(0,29)}=1;
}
print_r($map);
Kod:
$randomNumbers = array(); // storage array
for ($i=0;$i<20;$i++) {
$random = mt_rand(0,30);
while(in_array($random,$randomNumbers)) {
$random = mt_rand(0,30); }
array_push($randomNumbers,$random);
echo $random;
}
|
||
|
|
Svara med citat
|
|
|
#9 | ||
|
|||
|
Nykomling
|
Mitt förslag:
Kod:
$array = range(1,29); shuffle($array); $array = array_slice($array, 0, 5); print_r($array); |
||
|
|
Svara med citat
|
|
|
#10 | |||
|
||||
|
Mycket flitig postare
|
Citat:
|
|||
|
|
Svara med citat
|
| Svara |
|
|