作者tomin (for pete's sake)
看板Ajax
标题Re: [ js ] 随机分配网页
时间Wed Apr 1 03:06:22 2009
※ 引述《chenyutn (人生要死,何为苦心。)》之铭言:
: 我想让使用者可以经由javascript分配到不同的两个网页上
: 所以参考了网路上的资料 写成下面这段
: 随机产生1-2的数字 得到数字1就到001网页 得到数字2则到002网页
: <script language="javascript">
: var fileurl;
: fileurl = "000" + parseInt((Math.random()*2+1));
: fileurl = fileurl.substring(fileurl.length-3,fileurl.length);
: top.frames["main"].location.href = fileurl + ".html";//frames:指定框架
: </script>
: 但因为我跟javascript不是很熟
: 不知道这样的方式是不是能够真的达到随机分配?
: 或者会不会有什麽额外的问题?
首先谢谢你提供random的写法 以前没去想过js要怎麽写random
我也不确定这样写是不是够随机 java里会另外加time seed进去 让它更随机
我想说直接跑几笔资料 看结果够不够随机 亦即一半一半 50%、50%
分别跑了[100,1000,10000,100000,100000]笔资料
网页重新整理几次观察 确实是够随机 没有特别偏向某一边
根据「中央极限定理」 样本数愈大时 样本分配会趋近於常态分配 故得证# XD
demo:
http://noking.googlepages.com/random.html
随意选择一笔测资如下:
sampleNum: 0, sampleSize: 100
chanceOneCount: 50
chanceTwoCount: 50
sampleNum: 1, sampleSize: 1000
chanceOneCount: 509
chanceTwoCount: 491
sampleNum: 2, sampleSize: 10000
chanceOneCount: 4984
chanceTwoCount: 5016
sampleNum: 3, sampleSize: 100000
chanceOneCount: 49791
chanceTwoCount: 50209
sampleNum: 4, sampleSize: 100000
chanceOneCount: 49976
chanceTwoCount: 50024
code如下:
var randomNumber;
var chanceOneCount;
var chanceTwoCount;
var sample=[100,1000,10000,100000,100000];
for(var sampleNum=0; sampleNum < sample.length ; sampleNum++){
chanceOneCount=0;
chanceTwoCount=0;
for(var i=0 ; i< sample[sampleNum] ; i++){
randomNumber = parseInt(Math.random()*2+1);
if(randomNumber==1){
chanceOneCount++;
}
if(randomNumber==2){
chanceTwoCount++;
}
}
document.write("sampleNum: " +sampleNum + ", sampleSize: " +
sample[sampleNum] + "<br>");
document.write("chanceOneCount: " +chanceOneCount + "<br>");
document.write("chanceTwoCount: " +chanceTwoCount + "<br><br>");
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.116.40.183
1F:推 chenyutn:感谢!^^ 04/01 14:46