нужна помощь, чтобы решить этот цикл - PullRequest
0 голосов
/ 19 апреля 2019

Мне нужна помощь с этой проблемой. Я должен использовать функцию, которая имитирует запуск двух кубиков и возвращает массив с результатом (пример [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);

1 Ответ

2 голосов
/ 21 апреля 2019

Хорошо, я попытался решить эту проблему с циклом, и я тоже проверил, она отлично работает для меня, посмотрите код.

 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...