6年来,我的网站上有一个随机数生成器页面.很长一段时间,它是Google上"随机数生成器"的第一个或第二个结果,并且已被用于在论坛和博客上决定数十个(如果不是数百个)竞赛和绘图(我知道因为我看到了我的推荐人)网络日志,通常去看看).
今天,有人通过电子邮件告诉我,它可能不像我想的那么随机.她尝试生成非常大的随机数(例如,介于1和10000000000000000000之间),发现它们几乎总是相同的位数.实际上,我将函数包装在一个循环中,因此我可以生成数千个数字,当然,对于非常大的数字,变化只有大约2个数量级.
为什么?
这是循环版本,所以你可以自己试试:
http://andrew.hedges.name/experiments/random/randomness.html
它既包括Mozilla开发者网络的直接实现,也包括1997年我从不再存在的网页中删除的一些代码(Paul Houle的"Central Randomizer 1.3").查看源以查看每种方法的工作原理.
我在这里和其他地方读过有关Mersenne Twister的文章.我感兴趣的是为什么JavaScript的内置Math.random函数的结果没有更大的变化.谢谢!
我有各种依赖于javascript随机数的资源.但是,由于我生成随机数的方式,我已经看到很多问题,随机不是那么随机.
是否有任何javascript资源可以生成真实的,或者更好的随机数?
我知道我可以与Random.org交互,但我还有其他选择吗?
我正在使用:
function rand( lowest, highest){
var adjustedHigh = (highest - lowest) + 1;
return Math.floor(Math.random()*adjustedHigh) + parseFloat(lowest);
}
Run Code Online (Sandbox Code Playgroud) 我有以下脚本:
Timer=0;
function countdown(auctionid){
var auctions;
var divs;
Timer=Timer+1;
if((Timer%10=="0")||(Timer=="1")){
$.get("current.php", {
id:auctionid
},
function(data){
auctions=data.split("||");
for(n=0;n<=auctions.length;n++){
if(auctions[n] != undefined){
divis=auctions[n].split("##");
$('#futu'+divis[0]).html(divis[1]);
}
}
}
);
}
var cauctionid="auctionid";
var tauctions=auctionid.split("|");
for(i=0;i<=tauctions.length;i++){
if(tauctions[i] != undefined){
var dd=$('#futu'+tauctions[i]).text();
var cdd=dd-1;
$('#futu'+tauctions[i]).html(cdd);
dd=dd*1000;
dday=Math.floor(dd/(60*60*1000*24)*1)
dhour=Math.floor(dd/(60*60*1000)*1)
dmin=Math.floor((dd%(60*60*1000))/(60*1000)*1)
dsec=Math.floor(((dd%(60*60*1000))%(60*1000))/1000*1)
if(dday==0&&dhour==0&&dmin==0&&dsec==0){
$('#Bid'+tauctions[i]).html("SOLD");
//return
}
if(dhour <=9){
dhour = "0"+dhour;
}
if(dmin <=9){
dmin = "0"+dmin;
}
if(dsec <=9){
dsec = "0"+dsec;
}
if(dd>=1000){
var valll=dhour+":"+dmin+":"+dsec;
}
if(dd<1000){
var valll="00:00:00";
}
$('#Bid'+tauctions[i]).html(valll);
}
}
refreshID=setTimeout("countdown('"+auctionid+"')",1000);
} …
Run Code Online (Sandbox Code Playgroud) 我正在寻找JavaScript中的随机数生成器,我可以使用某个种子初始化并给出确定性结果(根据该种子).它应该能够在一定范围内提供随机整数,但是我也可以使用随机数发生器来吐出双倍(就像Math.random()).
基本上我正在寻找java.util.Random的等价物,如Java World for JavaScript中所知.
JavaScript中已经内置了这样的东西吗?是否有一些(可能是HTML5相关的API)指定了这样的东西?有没有提供这种随机数发生器的库?
我正在用JavaScript实现遗传算法,我需要能够为相同的输入(包括种子)收集相同的结果用于研究.
在JavaScript中,是否可以从另一个数字生成一个随机数?
我正在尝试为我的一个分形地形生成器实现一个可预测的随机数生成器.我已经知道可以使用Math.random()生成一个随机数,但我想创建一个随机数生成器,为每个输入生成一个输出.(例如,predictableRandomGenerator(1)
总是会产生相同的结果,这不一定与输入相同.)
那么是否可以从另一个数字生成一个随机数,其中每个输入的输出总是相同的?
编辑:这是使用谷歌Chrome 36
我正在弄乱html5画布,生成随机分布在立方体内的点并将其投影到2D画布上.令人惊讶的是,结果看起来并不十分对称,我怀疑Javascript的Math.random()让我感到沮丧.
谁能告诉我为什么会这样?有可能让它看起来实际上是随机的,而不是让它变慢吗?
var ctx = canvas.getContext('2d');
for (var i = 0; i < 10000000; i++) {
var x = Math.random()*2-1, y = Math.random()*2-1, z = 2+Math.random()*2-1;
x = (.5 + .5*x/z) * canvas.width;
y = (.5 + .5*y/z) * canvas.height;
ctx.fillRect(Math.floor(x), Math.floor(y), 1, 1);
}
Run Code Online (Sandbox Code Playgroud)
http://jsfiddle.net/y10tvj26/(加载需要一段时间)
Javascript是否有随机数生成器?
在你说Math.random()之前,我的要求是它应该允许一个种子值.对于相同的种子值,它应该生成完全相同的"随机"数字序列,并且数字序列应该是相当随机的.