如何显示骰子每个面部最上面的频率?
//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 ;
答案 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来迭代它。
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;