Autor Zpráva
kvoky
Profil
Potřeboval bych nějakou funkci v php která mi vygeneruje náhodné desetinné číslo od 0 do 0.999999... stejně jako Math.random() v JS.

Díky
panther
Profil
kvoky
v PHP je funkce rand(), která však vrací jen celá čísla. Pokud se smíříš s nějakým konečným počtem desetinných míst, řešil bych to asi následovně:
$cislo = rand(0,999999999) / 1000000000
kvoky
Profil
TO mě taky napadlo... no tak jestli to jinak nejde... použiju
Díky
BetaCam
Profil
panther
v PHP je funkce random

no to nevim, ale v které verzi PHP je funkce random?? Já vim tedy jen o funkcích rand() a mt_rand()
panther
Profil
BetaCam
jasně, překlep :-) Samozřejmě jsem myslel rand.. přemýšlím jinde nad JS :-) Opraveno i výše.

A díky za opravu
BetaCam
Profil
kvoky

Jinak by se dalo použít například :

$rand = (float)('0.'.mt_rand());


nebo

function random(){
	$rand = mt_rand();
	return $rand/(pow(10, strlen($rand)));
}


Ovšem o čistotě hlavně prvního způsobu se dá dost polemizovat.
BetaCam
Profil
kvoky

Mimochodem teď mě napadlo ještě trochu elegantnější řešení a to je použití funkce na to přímo určené. :

$rand = lcg_value();
_es
Profil
rand()/(getrandmax()-1) //interval <0, 1)
rand()/getrandmax() //interval <0, 1>
nightfish
Profil
když už tu padly různé metody, tak třeba ještě
$randVal = mt_rand()/mt_getrandmax();


EDIT: hmmm, nějak jsem zaspal zdá se
panther
Profil
BetaCam
Mimochodem teď mě napadlo ještě trochu elegantnější řešení a to je použití funkce na to přímo určené.
ne trochu elegantnější, ale bezpochyby nejelegantnější :-)
king26
Profil
nebo treba neco podobnymu tomudle?
$pocet_mist=5;
$cislo="0.";
for($i=1;$i<=$pocet_mist;$i++) $cislo.=rand(0,9);

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