JirkaVejrazka píše:Cele to mas nejak zbytecne slozite a komplikovane - proc do toho michas databazi? Proste si napis funkci, ktera vrati sest cisel a az s jejim vystupem pak pracuj.
Problém není v zamíchání databáze samotném, ale v způsobu, jakým je to uděláno.
Jestliže chci 6 náhodných čísel z určitého rozsahu (jestli jsem správně pochopil), pak potřebuji nějak získat ten rozsah (například seznam losovatelných čísel). Ten bych si ale z DB nejprve načetl, poté z něj teprve losoval - a teprve po vylosování zápis do DB.
Ale teď k losování - trochu zobecněno. V tomto případě (asi) není zaručeno, že všech 6 čísel bude opravdu unikátních.
- Kód: Vybrat vše
$SeznamLosovatelnychCisel = [...];
$Losovano = array_rand($SeznamLosovatelnychCisel, 6);
Je to ale jen jedno z mnoha možných řešení. Dala by se napsat spousta dalších - např.
- Kód: Vybrat vše
$SeznamLosovatelnychCisel = [...];
$Losovano = [];
$VylosovaneCislo = 0;
for($Cislo = 0; count($Losovano) == 6; $Cislo++)
{
$VylosovaneCislo = array_rand($SeznamLosovatelnychCisel);
if(!in_array($VylosovaneCislo))
{
$Losovano[] = $VylosovaneCislo;
}
}
nebo (možná trochu rychlejší)
- Kód: Vybrat vše
$SeznamLosovatelnychCisel = [...];
$Losovano = [];
$VylosovanaCisla = [];
for($Cislo = 0; count($Losovano) == 6; $Cislo++)
{
$VylosovanaCisla = array_rand($SeznamLosovatelnychCisel, 6);
$Losovano = array_unique(array_merge($Losovano, $VylosovanaCisla));
}