我试图在JavaScript中掷骰子1000次,但我的数组返回了一个NaN

我试图在JavaScript中掷骰子1000次,但我的数组返回了一个NaN,javascript,Javascript,因此,似乎count[无论什么]出于某种原因返回NaN。为什么? var i; var count = new Array(12); for( i = 0; i<999;i++) { var firstDice = Math.floor(Math.random() * 7); var secondDice= Math.floor(Math.random() * 7); var total = firstDice + secondDice;

因此,似乎count[无论什么]出于某种原因返回NaN。为什么?

  var i;
  var count = new Array(12);
  for( i = 0; i<999;i++)
   {
     var firstDice = Math.floor(Math.random() * 7);
     var secondDice= Math.floor(Math.random() * 7);
     var total = firstDice + secondDice;
     count[total]++;
   }

   console.log(count[3]);
   for(index=2; index<=12; index++)
   {
     console.log("EL NUMERO "+index+" SALIO "+ count[index]+" VECES MIVIVI");
   }

您没有初始化阵列,请执行以下操作:

var count = Array.from({ length: 13 }, () => 0);

正如@ibrahim mahrir在评论中所建议的那样

还要注意,您需要13个元素,而不是12个0、1、2。。。十二,

常量计数=数组。从{length:12},=>0;
forlet i=0;i如果您没有初始化数组,请执行以下操作:

var count = Array.from({ length: 13 }, () => 0);

正如@ibrahim mahrir在评论中所建议的那样

还要注意,您需要13个元素,而不是12个0、1、2。。。十二,

常量计数=数组。从{length:12},=>0;
forlet i=0;我你可以用13个元素的数组,因为你有13个索引。然后你必须取值1。。。6作为骰子一侧的随机数

var i, count=数组。从{length:13},=>0, 第一个骰子,第二个骰子,总计; 对于i=0;i<999;i++{ firstDice=Math.floorMath.random*6+1; secondDice=Math.floorMath.random*6+1; 总计=第一个骰子+第二个骰子; 计数[总数]+; } 控制台日志计数[3];
对于i=2;我你可以用13个元素的数组,因为你有13个索引。然后你必须取值1。。。6作为骰子一侧的随机数

var i, count=数组。从{length:13},=>0, 第一个骰子,第二个骰子,总计; 对于i=0;i<999;i++{ firstDice=Math.floorMath.random*6+1; secondDice=Math.floorMath.random*6+1; 总计=第一个骰子+第二个骰子; 计数[总数]+; } 控制台日志计数[3];
对于i=2;我计数[总数]=计数[总数]+?您没有将它们保存到数组中++在@atayenel做什么?您必须先用零初始化数组计数。一个简单的方法是使用fill:var count=newarray12.fill0;我试图习惯这种语法,但如果例如total=3 count[total]将在count[3]上加1,那么我们将继续计算它滚动3的次数@ArupRakshit我不知道它也在将值写回数组。我现在检查了它,用零初始化解决了这个问题count[total]=count[total]++?您没有将它们保存到数组中++在@atayenel做什么?您必须先用零初始化数组计数。一个简单的方法是使用fill:var count=newarray12.fill0;我试图习惯这种语法,但如果例如total=3 count[total]将在count[3]上加1,那么我们将继续计算它滚动3的次数@ArupRakshit我不知道它也在将值写回数组。我现在检查了它,用零初始化解决了这个问题。你也可以使用更简单的fill:newarray12.fill0;。。。另外count.length应该是13而不是12。。。。最后一件事,由于OP使用random的方式,其中一些样本损失为0和1和,因此结果数组中不会有1000个样本。换句话说,count[0]和count[1]将保留一些样本,OP甚至不需要它们。对不起,我的评论给您带来了不便!您还可以使用更简单的填充:newarray12.fill0;。。。另外count.length应该是13而不是12。。。。最后一件事,由于OP使用random的方式,其中一些样本损失为0和1和,因此结果数组中不会有1000个样本。换句话说,count[0]和count[1]将保留一些样本,OP甚至不需要它们。对不起,我的评论给您带来了不便!模辊计算方法正确-注意+1。这说明了数学的可能性。随机生成零,永远不会生成一。;random的范围是从包含零到不包含一个-写为[0,1]。模辊计算是正确的方法-注意+1。这说明了数学的可能性。random生成零并且永远不会生成一个;random的范围是从包含零到不包含一个-写为[0,1]。