我需要这个问题的帮助。
我必须使用一个函数来模拟两个骰子的启动并返回一个包含结果的数组(示例[3,2])。为了模拟启动,我必须使用math.random函数并获取1到6之间的值。
 我必须将掷骰子的结果相加,然后将和的结果保存在数组“启动结果”中……然后我必须进行36,000个音高并计算出最重复的结果。
我设法用启动值的总和来生成数组,但是从36000次启动的循环中,我只能生成单个数组,而不能生成一个数组。可能是因为循环不符合要求。

function launchTwoDice() {
    let dice1 = Math.floor(Math.random() * ((6 - 1) + 1) + 1);
    let dice2 = Math.floor(Math.random() * ((6 - 1) + 1) + 1);
    let dices = [];
    dices.push(dice1);
    dices.push(dice2);
    let sum = dices.reduce(function(a, b) {
        return a + b;
    });
    let resultOfLaunch = [];
    resultOfLaunch.push(sum);
    return resultOfLaunch;
};

let allLaunches = [];

for (let i = 0; i < 36000; i++) {
    let result = launchTwoDice();
    allLaunches[result] = allLaunches[result] + 1;
    allLaunches.push(result);

};

console.log(allLaunches);

最佳答案

好的,我尝试解决此循环问题,我也进行了测试,它对我来说很好用,请看一下代码。

 function launchTwoDice() {
        let dice1 = Math.floor(Math.random() * ((6 - 1) + 1) + 1);
        let dice2 = Math.floor(Math.random() * ((6 - 1) + 1) + 1);
        return dice1+dice2;
    };
    let allLaunches = [];
    for (let i = 0; i < 36000; i++) {
        let result = launchTwoDice();
        if(allLaunches[result] == undefined)
         { allLaunches[result] = 1; }
         else { allLaunches[result] = allLaunches[result] + 1};
    };


主要问题是,当我们将count放入数组时,像这样allLaunches[result] = allLaunches[result] + 1,在这种情况下,allLaunches[result]在未定义的位置,而undefined + 1 = NaN

因此,在将计数添加到allLaunches数组之前,先放置一个条件。

console.log(allLaunches)

(13) [empty × 2, 1041, 2024, 2923, 3982, 5128, 5968, 4980, 4055, 2930, 1929, 1040]
2: 1041
3: 2024
4: 2923
5: 3982
6: 5128
7: 5968
8: 4980
9: 4055
10: 2930
11: 1929
12: 1040
length: 13
__proto__: Array(0)

关于javascript - 需要一些帮助来解决此循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55764874/

10-09 21:13