我是javascript的新手,我遇到了以下问题。
模拟滚动模具60,000次,并显示模具每个面最上面的频率。
使用6个变量捕获频率,并在循环中使用6路if-else-if控制结构来适当增加它们。
我知道我必须创建一个包含6个变量的空数组,并且我已经用1开始了第一次迭代。 我不明白的是如何使用if-else-if语句来完成60000次迭代。
var array = [0, 0, 0, 0, 0, 0];
var i = 1;
答案 0 :(得分:2)
您可以为等于或大于0且小于6的random值引入另一个变量,并将其用作计数数组的索引。
然后你需要for
loop来计算60000随机值的分布。
var array = [0, 0, 0, 0, 0, 0],
i,
r;
for (i = 0; i < 60000; i++) { // iterate 60000 times
r = Math.floor(Math.random() * 6); // generate random value
array[r]++; // increment counter
}
console.log(array);
答案 1 :(得分:1)
此问题似乎是家庭作业,因为您 使用if..else
。
但是,您无需使用if...else
:
var arr = [0,0,0,0,0,0];
for(var i = 0; i < 60000; i++){
arr[~~(Math.random()*6)]++;
};
console.log(arr)
<强>解释强>
代码有一个for
循环,从0开始到60,000结束:
for(var i = 0; i < 60000; i++){
//...
};
对于每次迭代,都会生成0到6的随机值...
Math.random()*6
...并使用~~
转换为整数。
然后,该随机位置的数组中的元素递增:
arr[~~(Math.random()*6)]++;
因为这实际上是a homework,您的要求是:
if..else
你可以使用这个丑陋,麻烦和笨拙的代码:
var one = two = three = four = five = six = 0;
for (var i = 0; i < 60000; i++) {
var random = ~~(Math.random() * 6) + 1;
if (random === 1) {
one++
} else if (random === 2) {
two++
} else if (random === 3) {
three++
} else if (random === 4) {
four++
} else if (random === 5) {
five++
} else if (random === 6) {
six++
}
};
var arr = [one, two, three, four, five, six];
console.log(arr)
答案 2 :(得分:1)
for
,Math.random
:
var freqs = [0, 0, 0, 0, 0, 0];
var freqsLength = freqs.length; //* save array length into variable for more productivity
var rolls = 6000; //* how many time we want to roll dice
for(var i = 0; i < rolls; i++) { //* start rolling in loop
var j = Math.floor(Math.random() * freqsLength); //* get ramdom value
freqs[j]++; //* save freq result
}
alert(freqs);
答案 3 :(得分:1)
我是这样做的:
function randBetween(min, max) {
return Math.floor(Math.random() * (max - min)) + min;
}
let counters = {1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0};
for (let i = 0; i < 60000; i++) {
counters[randBetween(1, 6)]++;
}
console.log(counters);
这就是我猜你老师想要的东西:
function randBetween(min, max) {
return Math.floor(Math.random() * max) + min;
}
let one = 0;
let two = 0;
let three = 0;
let four = 0;
let five = 0;
let six = 0;
for (let i = 0; i < 60000; i++) {
const n = randBetween(1, 6);
if (n === 1) { one++; }
else if (n === 2) { two++; }
else if (n === 3) { three++; }
else if (n === 4) { four++; }
else if (n === 5) { five++; }
else { six++; }
}
console.log(one, two, three, four, five, six);
您可以自己决定哪种方案是优秀的解决方案(提示:您如何更改每个示例以反映100面模具的滚动?)
答案 4 :(得分:1)
这是if-else的一个工作示例:
var array = [0, 0, 0, 0, 0, 0];
var randomNumber;
for (var i = 0; i < 60000; i++) {
randomNumber = Math.floor(Math.random() * 6) + 1;
if(randomNumber === 1){
array[0]++;
}
else if(randomNumber === 2){
array[1]++;
}
else if(randomNumber === 3){
array[2]++;
}
else if(randomNumber === 4){
array[3]++;
}
else if(randomNumber === 5){
array[4]++;
}
else if(randomNumber === 6){
array[5]++;
}
}
console.log(array);