Функция на основе Math.random () не работает внутри другой функцииJavascript

Форум по Javascript
Ответить
Anonymous
 Функция на основе Math.random () не работает внутри другой функции

Сообщение Anonymous »

Я кодировал симулятор для TTRPG с «взрывающимся кости», что в основном означает, что если вы переворачиваете максимальное число на одну матрицу, то вы перелетели, которые умирают и добавляете результат к максимальному номеру. Это означает, что на 100% невозможно получить результат, равный кратному максимальному числу. И это работает, он никогда не может равняться восемь (протестировано с бесконечным циклом).
Однако я закодировал другую функцию, multidiceroll () , которая может снять множество Взрыв кости и катиться с преимуществом/недостатком. В multidiceroll () я использую ExplosIvedIceroll () и запускаю его через петли и еще много чего для моделирования нескольких костей и преимуществ. каким -то образом обнимает максимальное число, находясь внутри функции Multidiceroll () , что должно быть невозможно. Почему это? Кроме того, как мне это решить? Я не знаю, связано ли это или полезно. В то время как цикл Общий дизайн: < /p>
while([function with an input of a 1d8, no advantage] != 8) {}
< /code>
Идея заключается в том, что, поскольку получение 8 просто невозможно, цикл while будет продолжаться навсегда. Я ждал более нескольких секунд каждый раз. < /P>
explosiveDiceRoll() продолжение навсегда, он работает правильно
multiDiceRoll() быстро остановился, всегда заканчивая этим в консоли:
1d8
8,8 - SHOULD NOT EQUAL
[ 8 ]
< /code>
function explosiveDiceRoll(maxRoll) {
let roll = diceRoll(maxRoll);
let sum = roll;
while(roll === maxRoll) { //Reroll and add everytime it hits the max roll
roll = diceRoll(maxRoll);
if(roll === 0) console.log("zero error");
sum += roll
}
return sum;

}
< /code>
function multiDiceRoll(diceString,advantage) {
diceString = diceString.split("d");
// console.log(diceString);
let diceAmount= diceString[0];
let diceType = diceString[1];
console.log(`${diceAmount}d${diceType}`);

let results = [];
for(let i = 0; i
export function diceRoll(maxRoll) {
return Math.ceil(Math.random()*maxRoll);
}


Подробнее здесь: https://stackoverflow.com/questions/794 ... r-function
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»