Autor Zpráva
SZYslak
Profil
Ahoj borci, pred dvema dny jsem zacal s PHP. Mam trosku zkusenosti z Turbo Pascalu.
Potreboval bych generovat sekvence STEJNYCH nahodnych cisel, coz v Pascalu zajistoval prikaz "randseed".

Kdyz jsem nasledujici kod hodil na web, tak mi to vyhazuje nahodna cisla misto jednoho "randseed" nahodneho.
Docetl jsem se, ze od verze PHP 4.2 se "srand" volat nemusi, takze otazka je, zda-li je muj zamer nejak jednoduse proveditelny? Diky.

<?php
srand(1);
echo(rand());
?>
Marschmallow
Profil
SZYslak:
generovat sekvence STEJNYCH nahodnych cisel
Myslíš to tak, že si zadáš třeba rozmezí 5 až 25 a skript Ti vygeneruje čísla v tomto rozmezí (bez opakování)?
DJ Miky
Profil
srand by mělo fungovat, při nastavení na stejnou hodnotu bude dávat pokaždé stejné sekvence (na stejné platformě). Zkoušel jsem to na PHP 5.6.4 a 5.4.36 na různých strojích se stejnou platformou.
Alphard
Profil
DJ Miky [#3]:
Nejsem si jistý, jestli se verze mezi 5.1 a 5.3 nechovají jinak, různě se měnily algoritmy.

Viz stackoverflow.com/a/8069387, je tam uživatelská funkce pro nižší verze.
SZYslak
Profil
V PHP designeru mi to funguje tak jak ma. Na testovacim webu "www.stranka.net/test" NE.

Kod:

<?php
srand(1);
echo(rand());
phpinfo();
?>

Koukam, jestli treba na vine nebude nastaveni suhosin.srand.ignore na ON.
Tolik prekazek pro zacatecnika :-D
Alphard
Profil
SZYslak:
jestli treba na vine nebude nastaveni suhosin.srand.ignore na ON
Jo, je to uvedené i v php.net/manual/en/function.srand.php#102636, nechtěl jsem původní odpověď moc komplikovat.

K čemu to potřebujete? Doporučené řešení závisí na tom, jestli nedokonalost té funkce ohrozí bezpečnost. V první přiblížení bych se držel toho, co jsem odkázal výše.
SZYslak
Profil
Uf, opraveno, funkcni. Diky
K cemu to potrebuju? Mam v planu vytvorit pseudonahodnou mapu, slozenou z dlazdic ruzne barvy a "srnad" by mel zajistit, aby mapa vypadala porad stejne, jiny zpusob generovani me zatim nenapadl.
Ale toto je otazka daleke budoucnosti, zatim se s PHP seznamuju a bavi me to :-D

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: