初学者:掷骰子:频率和if-else-if?

时间:2016-03-16 15:15:32

标签: javascript arrays

如何显示骰子每个面部最上面的频率?

//this program stimulates rolling a dice
var outputAreaRef = document.getElementById("outputArea");

var array=[0, 1, 2, 3, 4, 5, 6];
var i=1;
var outString="";
while (i<60000)
{
    var number=Math.floor((Math.random() * 6) + 1);
    array[number]++;
    i++;
}

outputAreaRef.innerHTML = " array: " + array  ;

3 个答案:

答案 0 :(得分:3)

我知道你要做什么,这里可能更容易解释。

你有几个问题。你的数组应该是6个长度,而不是7个,所有值必须以0开头,否则你会收到误报。如果Zero真的是One,则在输出时进行修改,不要将其放在逻辑中。

方法正确递增但随机数应为0-5。最后你可以循环输出或使用控制台。与DOM注入相比,Console是检查和调试代码的更好方法。

如果您对此一无所知,请查看:-) Chrome DevTools

var array=[0,0,0,0,0,0];
var i=1;
while (i<60000)
{
  var number=Math.floor(Math.random()*6);
  ++array[number];
  i++;
}

console.table(array)

答案 1 :(得分:0)

看起来你只是缺少输出语法。您需要输出数组的每个索引,然后输出其值。试试这个:

//this program stimulates rolling a die
var outputAreaRef = document.getElementById("outputArea");


var array=[0, 1, 2, 3, 4, 5, 6];
var i=1;
var outString="";
while (i<60000)
{
var number=Math.floor((Math.random() * 6) + 1);
array[number]++;
i++;
}

for(var i = 0; i < array.length; i++)
{
    outputAreaRef.innerHTML += i + ": " + array[i] +"<br />";
}

答案 2 :(得分:0)

如果我认为你正在寻找的是正确的话,那么这就行了。我将一些代码更改为我自己的如何完成此操作的偏好,但概念是相同的。如果你继续使用数组,那么你可以使用forEach来迭代它。

&#13;
&#13;
var array = { 1:0, 2:0, 3:0, 4:0, 5:0, 6:0 };
iterations = 60000;

for (var i = 0; i < iterations; i++)
{
  var number=Math.floor((Math.random() * 6) + 1);
  array[number]++;
}

document.getElementById("outputArea").innerHTML = " array: " + JSON.stringify(array)  ;

for( var k in array ) {
  array[k] = Math.round((array[k] / iterations) * 1000)/1000;
}

document.getElementById("frequencies").innerHTML = " array: " + JSON.stringify(array)  ;
&#13;
<div id="outputArea"></div>
<div id="frequencies"></div>
&#13;
&#13;
&#13;