使用if-else-if

时间:2017-03-12 08:44:28

标签: javascript arrays if-statement

我是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;

5 个答案:

答案 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,您的要求是:

  1. 六个变量
  2. 六向if..else
  3. 你可以使用这个丑陋,麻烦和笨拙的代码:

    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)

forMath.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);