Nevíte prosím, jak v php vygenerovat náhodné číslo?
www.php.net, nebo hledej ve starších příspěvcích:-))
No to ses zase předvedl Lukašíku....
Kdyz to dokazu napsat z hlavy a je to na 2 řádky tak proč někomu pomáhat že? Zřejmě to nevíš....
srand ((double) microtime() *1000000);
$cislo = rand(min hodnota[, max hodnota]);
Nebo tak nějak...
function make_seed() {
list($usec, $sec) = explode(' ', microtime());
return (float) $sec + ((float) $usec * 100000);
}
srand(make_seed());
$randval = rand(0,4);
Číslo od 0 do 4:-)
> www.php.net, nebo hledej ve starších příspěvcích:-))
ono teda vygenerovat opravdu nahodna cisla (ne pseudonahodna) neni takova sranda, ale tazatel asi nemyslel nahodna, ale pseudonahodna
Díky za odpovědi. Samozřejmě, že náhodná čísla se vygenerovat nedají, ale pseudonáhodná, ale to je jen prkotina.
matematika nezna nahodu. nebo ano :)))
m.
A kdopak mi vysvětlí, jakej je rozdíl mezi náhodnym a pseudonáhodnym číslem?
jsou fylozoficka uceni, ve kterych nahoda neexistuje :) uz to chapes???
:)))
jinak pseudonahodne je naoko nahodne, ale nahodnost je definovana nejakym presne danym postupem - takze to neni nahodne...
sakra... a kdopak mi teda vysvetli co je to nahodne????
:)))))
m.
nahodne je IMHO to, co nebylo vygenerovano algoritmicky (... tj. sledovani preruseni, casu ... a generovani "nahodnych" cisel podle toho neni nahodne v tom nasem smyslu), musi to byt na zaklade nejake vnejsi priciny (sledovani stisku klaves atp.)
mozna je ale lepsi si to predstavovat tak, ze nahodna posloupnost cisel je takova, kde predchozi cisla v rade ti nedaji zadnou informaci o tom, jake bude dalsi cislo at uz byl ten pocet predchozich cisel jakykoliv
btw: hledal jsem ted nejakou definici na netu, kdyz uz jsem to sem nadhodil (no ja to nadhazuju vzdycky, kdyz nekdo tvrdi, ze nahodna cisla jsou jednoduse ziskatelne ;-) ale nic moc, nasel jsem akorat prednasku na harvardu, kde se timhle zabyvaji ;-)
http://icg.harvard.edu/~cs225/syllabus/
Lukasiku, bud rad, ze to vedet nemusis ;-)
Radek
zalezi proste na uhlu a filozofii pohledu. nekomu jako nahodne cislo staci pseudonahodne cislo (cislo z nejake rady), mi programatori se spokojime s tim, ze cislo je vybirano z nejakeho nedefinovatelneho 'sumu' (treba vybirani pseudonahodnych cisel tak dlouho, dokud uzivatel nestiskne klavesu), nektera vychodni uceni zase tvrdi, ze nahoda neexistuje a vse je rizeno a presne dano :)
ale pokud bych mel napsat neco k veci, pak si myslim, ze generovani cisel pomoci php je docela nahodne (z meho uhlu pohledu). jelikoz se cisla vybiraji podle stejneho algoritmu pro vsechny prave pripojene uzivatele, nemohu presne urcit, ktere cislo bude prave nasledovat... alespon pri mich rychlych pokusech to tak vypadalo.
m.s.
Ne! Čísla v PHP jsou náhodná, páč jsou vybíráná podle času!
Takže dle mého mínění to není pseudonáhodné, ale pouze náhodné...
kde jsi prisel na to, ze jsou vybirana podle casu? myslim, ze je to asi nejak jinak (dukladneji matematicky). ale i kdyby tam byl cas pouzit, je to stale podle nejakeho algoritmu... ja jsem ale na jedine pouziti casu narazil pri inicializaci generatoru (to je nejjednodussi, ale muzes to klidne inicializovat i jinak - to je proto, aby se nevybiralo stale ze stejne rady).
nekde mam schovanej silenej zdrojak pro generovani rady (pseudo)nahodnych cisel v assembleru Z80 a asi po hodine jsem analyzu vzdal - moc velka matematika na me (v bitovych presunech jsem se utopil:))). zajistuje, ze kazde cislo se generuje jen jednou, ale rada je pokazde jina (zalezi jakym cisle se inicializuje rutina)...
m.
ja to zkusim jeste trosku jednoduseji:
nechas si vygenerovat straaasne dlouhou radu pseudonahodnych cisel v php, na zaklade toho a znalosti toho algoritmu, kterym se ty cisla generuji muzes odvodit napr., ze dalsi cislo v rade bude napr. 45 s pravdepodobnosti 0.4, nejake jine s jinou pravdepodobnosti a s nejakou pravdepodobnosti uplne neco jineho
kdyby to byly nahodna cisla, tak o tom dalsim cisle nemuzes rict vubec nic
schvalne zkus popremyslet, na co jsou nahodna cisla potreba pri praci se sessions, co by se stalo, kdyby ty generovane session_id byly nedostatecne nahodne, tj. ze bys pristoupil na web, obdrzel nejake session_id a mohl sis zkouset nastavovat jina session_id, ktere by mohl mit nekde z jinych navstevniku toho webu v tu dobu
to proto se na ty session_id generuji tak dlouha cisla - aby byla velmi mala pravdepodobnost, ze nekdo trefi jine , tou dobou platne
po case zase hodnotna diskuse co ? ;-)
To ano :-)
Pseudonáhodná a náhodná....
Hmm, nevím ale proč se tu o tom diskutuje :-(
Ale alespoň v tom máme všichni jasno :-)
Ovšem souhlasím s M.S. že i pseudon. by se dalo považovat za náhodné protože po předchozím inicializačním procesu řady posldle času je pro člověka nemožné toto číslo předvídat.
Proto bych to definoval takto:
Pseudonáhodné = náhodné pro člověka
Náhodné = náhodné pro všechno a všechny
Moje poslední náhoda byla, když jsem měl minulý týden sex ve 3 a nikdo to ještě ten den nevěděl že se má zrovna tohle stát. Většinou náhoda je vlastně štěstí nebo smůla, proto ho na PC nejde vytvořit - protože PC jedna podle instrukcí pocházejících z 1 a 0.
Master
nahoda je blbec. btw. sex ve trech fakt neni spatnej .ale to s PHP uz asi moc nesouvisi,co?
Nesouvisí, ale pokračuj MASTERe :-))))
... spatny to neni, ale spatne se z toho muze udelat ;~) ...
Ale abych se alespon trosku dotknul tematu, tak pro ty, kterym by stale vrtalo hlavou (i pres to, co uz tu bylo napsano) proc prave PSEUDOnahodna cisla ... necht si zkusi pustit nekolikrat po sobe nasledujici skript a zjisti, ze na tech cislech vlastne nic nahodneho neni :o)
<?php
srand(1); // toto neni omyl ;-)
for ($i=0;$i<20;$i++) echo rand()." <br>";
?>
Radek
>Moje poslední náhoda byla...
...no svoje 'nahody' tady vypoustet nebudu, protoze se tady diskutuje i pred 22hodinou a jsou tu i mladsi 18let :) - takze k tomu snad jen, ze ted v lete je mozne vsechno :)
>Pseudonáhodné = náhodné pro člověka
...zalezi jak pro ktereho, jednomu se to muze zdat jako nahoda, pro jineho uz tak docela ne ;-)
>Náhodné = náhodné pro všechno a všechny
...je to ale sakra nahoda, ze to tu ten rosik tak rozvlnil poklidne vody :)
>Ovšem souhlasím s M.S. že i pseudon. by se dalo považovat za náhodné
...diky, ze se mno zase jednou nekdo souhlasi :) ale ja to myslel asi kapanek jinak... viz.dale
> protože po předchozím inicializačním procesu řady posldle času je pro člověka nemožné toto číslo předvídat...
prvni cislo bez znalosti inicializace se predpovida tezko, ale po nekolika vygenerovanych cislech se zase dostanes do situace, ze jsi schopen predvidat nasledujici vygenerovane cislo - viz. mira... moje prirovnani k nahodnym cislum bylo v tom, ze pokud budu stejnym algoritmem pro generovani pseudonahodnych cisel postupne pridelovat pseudonahodna cisla nekolika nahodnym uzivatelum, kteri budou nahodne davat podnet k vygenerovani pseudonahodneho cisla, muze pri nahodnem poctu pozadavku k vygenerovani pseudonahodnych cisel dojit k situaci, ze nebudu schopen urcit, jake dalsi pseudonahodne cislo bude vygenerovano kteremu z nahodnych uzivatelu a pomalu mohu zacit i o pseudonahodnych cislech mluvit jako o nahodnych cislech.... uffffffffff :)))) koncim...
podobne se to resi, ze treba generujes pseudonahodna cisla porad dokola az do okamziku, kdy uzivatel stiskne klavesu a pak posledni vygenerovane pseudonahodne cislo pouzijes jako nahodne.... ouaaahh smrt... :)))
to jsem zase neco splodil :) - dopiju kafe a jdu se zabyvat necim plodnym...
m.
Ja vam dam nahodna cisla!!!! Na FELu jsem na nich malem vyhorel. :o)))