Zdravím všechny!
Nevím zda s tímhle máte někdo zkušenosti, ale jak byste chtěli vygenerovat 5 náhodných čísel dejme tomu od 1 do 20 tak, aby se navzájem neshodovali?
Tzn., že pokud použiju pět proměnných, kde pomocí rand(1, 20) dostanu např.:
16 * 7 * 10 * 19 * 7
... jakým způsobem docílit toho, aby se neshodovali třeba ty dvě sedmičky?
Díky za jakoukoliv sebemenší radu!
$cisla=array();
$duplicita=false;
for($i=0;$i<5;$i++) {
$temp=rand(1,20);
for($j=0;$j<count($cisla);$j++) {
if($temp==$cisla[$j]) $duplicita=true;
}
$cisla[$i]=$temp;
if($duplicita) $i--;
$duplicita=false;
}
Nezkoušel jsem to. Snad je poznat, co jsem měl při psaní tohoto kódu za lubem.
<?php
function nahodneheslo ( )
{
// Pokud nesmí tvořit náhodné číslo nějaké znaky, smažte je (pokud zde jsou) z následujícího řádku.
$moznosti= array("1","2","3","4","5","6","7","8","9","0");
//Počet míst náhodného hesla
$mista="5";
$heslo="";
for ($i=0 ;$i<=$mista-1 ;$i++)
{
$nahoda=rand(0, count($moznosti)-1);
$heslo.=$moznosti[$nahoda];
}
echo "Náhodné heslo: $heslo";
}
nahodneheslo ( );
?>
skus uvidis...
A jo.. sem si spatne precetl otazku... Tak nic..
# Já bych použil jiný postup:
# vygenerujeme pole x čísel
for($i=1;$i<=20;$i++) $pole[$i] = $i;
# inicializujeme náhodu
srand((double) microtime() * 10000000);
# vytáhneme náhodných y prvků - pozor, funkce vrací klíče, ne hodnoty pole
$nahodna = array_rand($pole, 5);
# Toť vše
Du hast recht! Byl jsem zaslepen funkcí rand()!
Děkuji všem, převážně tobě, Nípale!