Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
百分比分布-JavaScript Math.random()_Javascript_Math_Random - Fatal编程技术网

百分比分布-JavaScript Math.random()

百分比分布-JavaScript Math.random(),javascript,math,random,Javascript,Math,Random,我有百分比10%、20%和70%来决定采取哪种行动。我有两种决定方法:#1每次让一个新的Math.random()决定,或#2保留一个Math.random()结果。请参阅我在控制台中运行的代码(注意rand1和rand2方法): 我不明白为什么图表1倾向于.18,72]?那是因为数学是错误的。如果你想在第二次比较中使用一个新的随机数,那么它应该适用于20/90的情况,而不是20/100。因此: var rand1 = function() { if (Math.random() <

我有百分比10%20%70%来决定采取哪种行动。我有两种决定方法:#1每次让一个新的Math.random()决定,或#2保留一个Math.random()结果。请参阅我在控制台中运行的代码(注意
rand1
rand2
方法):


我不明白为什么
图表1
倾向于
.18,72]

那是因为数学是错误的。如果你想在第二次比较中使用一个新的随机数,那么它应该适用于20/90的情况,而不是20/100。因此:

var rand1 = function() {
  if (Math.random() < 0.1) chart1[0]++;
  else if (Math.random() < 0.222222222222222) chart1[1]++;
  else chart1[2]++;
};
var rand1=function(){
if(Math.random()<0.1)chart1[0]+;
else if(Math.random()<0.2222222)chart1[1]+;
else图1[2]++;
};

如果您不使用新的随机数,则它会起作用,因为这样您就知道该数字在0.1范围内。。当你达到第二个条件时为1.0,所以如果小于0.3,则为20/90的情况。如果选择一个新的随机数,则该随机数的范围为0.0。。1.0.

考虑在第一张图表的第二列生成数字的概率。首先生成一个概率为10%的数字,该数字在第一列中结束。如果这个数字不在第一列,有90%的可能性,则有20%的可能性在第二列结束。您将一个数字放入第二个图表的总概率为0.9*0.2=0.18。加上一些随机变化,你会得到大约18

对于第三列,您有100-10-18=72


如果接受第二个值的概率被更改为2/9而不是2/10,那么接受的总概率将是9/10*2/9=2/10,或者20%,这就是您想要的。

嗯……为什么在If条件下再次调用Math.random()。???? 像这样使用

var rand1 = function(){
var number = Math.random();
if(number <= 0.1) chart1[0]++;
else if(number <= 0.3) chart1[1]++;
else chart1[2]++;
};
var rand1=function(){
var number=Math.random();

如果(数字是的,这就是OP在第二张图表中所做的,问题是为什么会有差异。该死,你是对的。其实很简单。如果我把18和72加起来,我得到90。在90-18到72之间是20%到80%的比率。18/90=0.2=20%。明白了。谢谢。是的。基础数学。真丢脸!谢谢
var rand1 = function() {
  if (Math.random() < 0.1) chart1[0]++;
  else if (Math.random() < 0.222222222222222) chart1[1]++;
  else chart1[2]++;
};
var rand1 = function(){
var number = Math.random();
if(number <= 0.1) chart1[0]++;
else if(number <= 0.3) chart1[1]++;
else chart1[2]++;
};