Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: zvire 01. 11. 2013, 14:47:58
-
Zdravím vespolek,
potřebuji v PHP naplnit pole 0...15 (16 míst) náhodnými čísly 0..15 (16 čísel), tak, aby každé bylo v poli jen jedenkrát.
$min=0;
$max=15;
for ($i=0;$i<16;$i++) {
$cislo=rand($min,$max); // generace nahodneho cislo od 0 do 15
$je=0; //1-dane nahodne cislo v poli je, 0-dane nahodne cislo v poli neni
for ($i2=0;$i2<$i+1;$i2++) {
if ($cislo==$pole[$i])
{$je=1;}
}
if ($je=1)
{$pole[$i]=$cislo;}
else {
$cislo++;
//hledam cisla do te doby dokud nenajdu takove, ktere v poli jeste neni
}
}
Jak pokračovat na místě " //hledam cisla do te doby dokud nenajdu takove, ktere v poli jeste neni"? Případně dělat to úplnš jinak?
Předem díky všem za pomoc.
-
Co třeba vytvořit pole s hodnotami [0..15] a pak ho promíchat?
http://www.w3schools.com/php/func_array_shuffle.asp
-
Nebo použít vygenerovanou hodnotu jako klíč asociativního pole a pouštět to ve while cyklu, dokud nebude mít pole požadovaný počet prvků?
-
Nebo použít vygenerovanou hodnotu jako klíč asociativního pole a pouštět to ve while cyklu, dokud nebude mít pole požadovaný počet prvků?
Viz http://stackoverflow.com/a/3140277.
-
While cyklus na tento úkol rozhodně ne. Napsal bych to takhle:
<?php
function getRandMixedArray($iMin = 0, $iMax = 15)
{
return (($arrRand = range($iMin, $iMax)) && shuffle($arrRand)) ? $arrRand : array();
}