Diskuze: Generátor náhodných čísel
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 6 zpráv z 6.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Ahoj, co třeba něco takového:
function generateRandom($from, $to, $count) {
$res = [];
if ($to > $from){
for ( $i = 0; $i < $count; $i++ ){
$res[] = rand($from, $to);
}
}
return $res;
}
Tvé řešení má několik nedostatků, a sice negeneruje moc náhodná čísla...
if ($do - $od > $pocet - 2)
proč? Něco takového by funkce
na generování čísel neměla kontrolovat. To je na nějakém kódu, co bude
tohle spouštět.Moc nechápu k čemu má být tato podmínka:
if ($do - $od > $pocet - 2)
pokud je tam od toho, aby se nezadalo číslo $od větší něž $do a zároveň aby $pocet nebyl 0, udělal bych radši toto:
function generujCisla($od, $do, $pocet) {
$cisla = [];
if ($od >= $do || $pocet < 1) {
return false;
}
while (count($cisla) < $pocet) {
$cislo = rand($od, $do);
if (!in_array($cislo, $cisla)) {
$cisla[] = $cislo;
}
}
return $cisla;
}
Jo a je lepší (aspoň podle mě) psát proměnné v angličtině
add 1. Souhlasím, podmínku jsem dodělal navíc jen jako pojistku pro
případ, kdyby se zadal menší rozsah než je požadovaný počet čísel -
pak by se funkce zasekla na while cyklu.
add 2. Potřeboval jsem získat různá náhodná čísla, tedy
aby ve výsledném poli nebyla dvě stejná čísla.
add 3. Kód si zatím píšu jen sám pro sebe, ale díky za upozornění, budu
se snažit přeorientovat čistě na anglické názvy proměnných a funkcí
Podmínka je tam jen jako pojistka while cyklu, pokud by se zadalo např. (1, 10, 20), pak by se cyklus zasekl, protože nikdy nenaplníš pole 20 různými celými čísly v rozsahu od 1 do 10.
Zobrazeno 6 zpráv z 6.