我需要一个PHP函数来生成与javascript Math.random()相同的随机数 宽度相同的种子。
关于math.random()的MDN:
随机数生成器从当前时间播种,如 Java的。
到目前为止,我尝试过PHP的rand()生成类似的东西:
srand( time() ); // I use time as seed, like javascript does
echo rand();
Output: 827382
javascript似乎以自己的方式生成随机数:
Math.random(); Output: 0.802392144203139
我需要与math.random()等效的PHP代码,而不是新的javascript代码。我无法更改javascript。
答案 0 :(得分:11)
您可以使用返回值的函数:
function random() {
return (float)rand()/(float)getrandmax();
}
// Generates
// 0.85552537614063
// 0.23554185613575
// 0.025269325846126
// 0.016418958098086
var random = function () {
return Math.random();
};
// Generates
// 0.6855146484449506
// 0.910828611580655
// 0.46277225855737925
// 0.6367355801630765
@elclanrs解决方案更容易,不需要转换。
的更新强>
这里有关于PHP mt_rand()
和rand()
之间差异的一个很好的问题:
的 What's the disadvantage of mt_rand? 强>
答案 1 :(得分:2)
Javascript的Math.random给出0到1之间的随机数.Zero是正确的输出,但不应包含1。 @ thiagobraga的回答可以给出1作为输出。我的解决方案是:
function random(){
return mt_rand() / (mt_getrandmax() + 1);
}
这将给出0到0.99999999953434之间的随机数。
答案 2 :(得分:0)
你可以尝试:
function random () {
return (float)("0." . rand(1e15, 999999999999999));
}
甚至:
function random () {
return rand(1e15, 999999999999999) / 1e15;
}
然而,@ elclanrs解决方案似乎要容易得多。我试过了。