Generování čísel v PHP bez opakování v daném rozmezí pomocí rand

Pokud potřebujeme na stránce vygenerovat nějaké číslo v rozmezí, které zadáme, můžeme využít PHP. Začínáme!

Do proměnné $nahodnaCisla si pomocí array uložíme rozmezí čísel, ve kterých chceme generovat. Já jsem zvolil rozmezí 1 – 5000 (vyznačeno červeně v kódu), ale můžeme si zadat jakékoliv jiné rozmezí, třeba 2585 – 185005, nebo 1 – 10, je to na Vás. Rozmezí čísel vožíme mezi závorky a oddělíme čárkou, jako je to v kódu níže. Následně se nám do proměnné $cislo uloží vygenerované číslo. Zde je PHP kód:

PHP:

<?php
$nahodnaCisla = array();
do {
    $cislo = rand(1, 5000);
    if (!in_array($cislo, $nahodnaCisla)) $nahodnaCisla[] = $cislo;
} while (count($nahodnaCisla) < 5);
?>                     


Pokud bychom s vygenerovaných číslem chtěli dále pracovat, máme ho stále uložené v proměnné 
$cislo, kterou můžeme dále zpracovávat jinými skripty. Například poslat do databáze, uložit do souboru, atd…

Pokud bychom chtěli číslo vypsat uživateli pomocí funkce echo, přidáme na konec skriptu (před ?>) ještě tento kód:

echo $cislo;

Ten nám zajistí, že se vypíše samostatné číslo na řádek, které je stále uložené v proměnné $cislo na řádek. Jestli bychom ho ještě chtěli obohatit hláškou „Vygenerované číslo v rozmezí 1 – 5000 je…“, klidně můžeme. Živá ukázka. Na konec kódu (nejdříve bychom odstranili předchozí echo) bychom tedy ještě přidali: 

echo "Vygenerovan&#233; &#269;&#237;slo v rozmez&#237; 1 - 5000 je&nbsp;"; echo "<strong>";  echo $cislo; echo "</strong>";


Kompletně celý PHP kód i s výpisem by tedy mohl vypadat třeba takto:

<?php
$nahodnaCisla = array();
do {
    $cislo = rand(1, 5000);
    if (!in_array($cislo, $nahodnaCisla)) $nahodnaCisla[] = $cislo;
} while (count($nahodnaCisla) < 5);
echo "Vygenerovan&#233; &#269;&#237;slo v rozmez&#237; 1 - 5000 je&nbsp;";
echo "<strong>"; 
echo $cislo;
echo "</strong>";
?>                     


Živá ukázka

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *