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); |
|||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Har WN som tidsfördriv
|
1 - skapa en array med de olika värdena i
kör rand() på arrayen |
||
![]() |
![]() |
![]() |
#3 | |||
|
||||
Mycket flitig postare
|
Citat:
Det var exakt något sådant jag letade efter! Tack så mycket! |
|||
![]() |
![]() |
![]() |
#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]]; |
|||
![]() |
![]() |
![]() |
#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> |
||
![]() |
![]() |
![]() |
#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?) |
|||
![]() |
![]() |
![]() |
#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.
|
|||
![]() |
![]() |
![]() |
#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; } ![]() |
||
![]() |
![]() |
![]() |
#9 | ||
|
|||
Nykomling
|
Mitt förslag:
Kod:
$array = range(1,29); shuffle($array); $array = array_slice($array, 0, 5); print_r($array); |
||
![]() |
![]() |
![]() |
#10 | |||
|
||||
Mycket flitig postare
|
Citat:
|
|||
![]() |
![]() |
Svara |
Ämnesverktyg | |
Visningsalternativ | |
|
|