Math.random () basierte Funktion funktioniert nicht in einer anderen FunktionJavaScript

Javascript-Forum
Anonymous
 Math.random () basierte Funktion funktioniert nicht in einer anderen Funktion

Post by Anonymous »

Ich habe einen Simulator für ein TTRPG mit "Explodierenden Würfel" codiert. Wenn Sie eine maximale Zahl auf einer Sterbe rollen, können Sie diese sterben und das Ergebnis zur maximalen Nummer hinzufügen. Das bedeutet, dass es 100% unmöglich ist, ein Ergebnis zu erhalten, das einem Vielfachen der maximalen Zahl entspricht. Und es funktioniert, es kann niemals acht gleich sind (getestet mit einem unendlichen endenden während der Schleife). Würfel explodieren und mit Vorteil/Nachteil rollen. In multidiceroll () verwende ich explosivediceroll () und führe es durch Schleifen aus und so weiter, um mehrere Würfel und Vorteile zu simulieren. rollt die maximale Nummer irgendwie in der Multidiceroll () -Funktion, was unmöglich sein sollte. Warum ist das? Wie löste ich es auch? Ich weiß nicht, ob das verwandt oder hilfreich ist. Während Schleifen allgemeines Design: < /p>

Code: Select all

while([function with an input of a 1d8, no advantage] != 8) {}
< /code>
Die Idee ist, dass, da es einfach unmöglich ist, eine 8 zu bekommen, die während der Schleife für immer fortgesetzt wird. Ich habe jedes Mal höchstens ein paar Sekunden gewartet. < /P>
explosiveDiceRoll()
für immer fortgesetzt, es funktioniert ordnungsgemäß

Code: Select all

multiDiceRoll()
wurde schnell angehalten und endete immer in der Konsole:

Code: Select all

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);
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post