Javascript 如何生成一组具有两个和的随机数
我正在尝试使用javascript实现PCFG的内外算法。但是我有一个问题,生成一组随机数据 假设我需要10个随机数,我需要:Javascript 如何生成一组具有两个和的随机数,javascript,math,random,nlp,Javascript,Math,Random,Nlp,我正在尝试使用javascript实现PCFG的内外算法。但是我有一个问题,生成一组随机数据 假设我需要10个随机数,我需要: 前5个数之和为1,后5个数之和也为1 第三、第四、第五、第八、第九和第十的和是1 我不知道该怎么做 目前,我只能实现两点中的一点。 谢谢大家。查看此页() 将给你一个介于0和1之间的数字 假设您对数值没有限制,并且只能实现两点中的一点,那么一个想法是生成0到0.25之间的4个数字(n1到n4)。 只有很少的变化才能得到4乘以0.25=1的结果。 您的第五个号码将仅为1-
<html>
<head>
<title>Stackoverflow question 31336708</title>
</head>
<body>
<script type="text/javascript">
// Solve rule #2
var n3=Math.random()/6;
var n4=Math.random()/6;
var n5=Math.random()/6;
var n8=Math.random()/6;
var n9=Math.random()/6;
var n10=1-(n3+n4+n5+n8+n9); // filling the cup for rule #1
// limit case for rule #1 : n3=n4=n5 = 1/6 and n8=n9 = 0. n10 = 0.5 ==> spread 0.5 on n6 and n7 ==> random/4
// other limit case for rule #1 : n3=n4=n5 = 0 and n8=n9 = 1/6. n10 = 4/6=2/3 ==> spread 1/3 on n6 and n7 ==> random/6
// ==> cut the apple in two ==> use random/5 for n2
var n2=Math.random()/5;
var n1=1-(n2+n3+n4+n5); // filling the cup for rule #2
var R1=n1+n2+n3+n4+n5;
var R2=n3+n4+n5+n8+n9+n10;
//checking :
alert("Checking rule #1 = <"+R1+"> with\n n1="+n1+"\n n2="+n2+"\n n3="+n3+"\n n4="+n4+"\n n5="+n5);
alert("Checking rule #2 = <"+R1+"> with\n n3="+n3+"\n n4="+n4+"\n n5="+n5+"\n n8="+n8+"\n n9="+n9+"\n n10="+n10);
</script>
</body>
</html>
堆栈溢出问题31336708
//求解规则#2
var n3=Math.random()/6;
var n4=Math.random()/6;
var n5=Math.random()/6;
var n8=Math.random()/6;
var n9=Math.random()/6;
变量n10=1-(n3+n4+n5+n8+n9);//为规则1加满杯子
//规则#1的极限情况:n3=n4=n5=1/6和n8=n9=0。n10=0.5==>在n6和n7上分布0.5==>随机/4
//规则#1的其他极限情况:n3=n4=n5=0和n8=n9=1/6。n10=4/6=2/3==>在n6和n7上排列1/3==>随机/6
//==>将苹果切成两半==>使用random/5表示n2
var n2=Math.random()/5;
变量n1=1-(n2+n3+n4+n5);//为规则2加满杯子
var R1=n1+n2+n3+n4+n5;
变量R2=n3+n4+n5+n8+n9+n10;
//检查:
警报(“检查规则#1=带有\n n1=“+n1+”\n n2=“+n2+”\n n3=“+n3+”\n n4=“+n4+”\n n5=“+n5”);
警报(“检查规则2=与\n n3=“+n3+”\n n4=“+n4+”\n n5=“+n5+”\n n8=“+n8+”\n n9=“+n9+”\n n10=“+n10”);
我会尝试分两步来做
x1=范围[0…1-(3+4+5)]内的样本
x2=1-(3+4+5)-x1
y1 = sample in the range [0...1-(8+9+10)]
y2 = 1-(8+9+10) - y1
y1 = sample in the range [0...1-(8+9+10)]
y2 = 1-(8+9+10) - y1