Autor Zpráva
Zelenáš
Profil *
Potřeboval bych generovat opakovaný náhodný výběr čísla mezi 1 - 10000, tak aby již jednou vybrané číslo vypadlo z možného výběru, dalo by se to nějak realizovat bez databáze jen pomocí PHP? Poradí někdo zelenáčovi ;-) díky
Again
Profil
Náhodné čísla můžeš generovat pomocí funkce rand, následně ukládat do textového souboru a poté kontrolovat třeba podmínkou, jestli číslo už bylo vygenerované nebo ne.

EDIT: Možná jsem to pochopil špatně, dané číslo se bude generovat při refreshi stránky, nebo na jedné stránce se vypíše x čísel v náhodném výběru ? V případě druhé možnosti, je možné čísla ukládat rovnou do pole.
Aleš Janda
Profil
Again:
Náhodné čísla můžeš generovat pomocí funkce rand, následně ukládat do textového souboru a poté kontrolovat třeba podmínkou, jestli číslo už bylo vygenerované nebo ne.
Tohle má složitost n^2. Při vyšším počtu možných hodnot tedy bude dost náročné.

Lepší je vygenerovat posloupnost čísel a tu náhodně zamíchat. A pak vracet postupně prvky z té zamíchané posloupnosti.
mzk
Profil *
Zelenáš:
pokud je to v rámci jedné stránky, tak můžeš využít třeba pole
$cisla = array();
do 
  {
      $cisla[rand(1,1000)] = 1;
  } while (count($cisla) < pocet);
pak už stačí jen vypsat ty klíče a máš to.
juriad
Profil
$cisla = array();
for( $i = 1; $i<=1000; $i++) {
  $cisla[$i-1] = $i;
}

for( $i = 999; $i>=0; $i--) { // postupně si na $i-tou pozici ukládáš náhodný prvek ze předu pole
  $rand = rand(0,999);
  $tmp = $cisla[$i];
  $cisla[$i] = $cisla[$rand];
  $cisla[$rand] = $tmp;
}

Tímto dostaneš pole velikosti 1000, ve kterém bude každé číslo právě jednou, stačí aby sis vzal prvních několik prvků.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0