Dice game probabilities: Difference between revisions

m
no edit summary
(JavaScript added)
mNo edit summary
Line 773:
1000000 rolls, p1 = 5d10, p2 = 6d7
p1 wins 64.279% of the time</pre>
 
=={{header|JacaScript}}==
===simulating===
<lang javascript>
let Player = function(dice, faces) {
this.dice = dice;
this.faces = faces;
this.roll = function() {
let results = [];
for (let x = 0; x < dice; x++)
results.push(Math.floor(Math.random() * faces +1));
return eval(results.join('+'));
}
}
 
function contest(player1, player2, rounds) {
let res = [0, 0, 0];
for (let x = 1; x <= rounds; x++) {
let a = player1.roll(),
b = player2.roll();
switch (true) {
case (a > b): res[0]++; break;
case (a < b): res[1]++; break;
case (a == b): res[2]++; break;
}
}
document.write(`
<p>
<b>Player 1</b> (${player1.dice} × d${player1.faces}): ${res[0]} wins<br>
<b>Player 2</b> (${player2.dice} × d${player2.faces}): ${res[1]} wins<br>
<b>Draws:</b> ${res[2]}<br>
Chances for Player 1 to win:
~${Math.round(res[0] / eval(res.join('+')) * 100)} %
</p>
`);
}
 
let p1, p2;
 
p1 = new Player(9, 4),
p2 = new Player(6, 6);
contest(p1, p2, 1e6);
 
p1 = new Player(5, 10);
p2 = new Player(6, 7);
contest(p1, p2, 1e6);
</lang>
{{out}}
<pre>
Player 1 (9 × d4): 572753 wins
Player 2 (6 × d6): 356478 wins
Draws: 70769
Chances for Player 1 to win: ~57 %
 
Player 1 (5 × d10): 643127 wins
Player 2 (6 × d7): 312151 wins
Draws: 44722
Chances for Player 1 to win: ~64 %
</pre>
 
 
 
=={{header|Julia}}==
Line 836 ⟶ 897:
0.5731440767829815
0.6427886287176273
</pre>
 
=={{header|JacaScript}}==
===simulating===
<lang javascript>
let Player = function(dice, faces) {
this.dice = dice;
this.faces = faces;
this.roll = function() {
let results = [];
for (let x = 0; x < dice; x++)
results.push(Math.floor(Math.random() * faces +1));
return eval(results.join('+'));
}
}
 
function contest(player1, player2, rounds) {
let res = [0, 0, 0];
for (let x = 1; x <= rounds; x++) {
let a = player1.roll(),
b = player2.roll();
switch (true) {
case (a > b): res[0]++; break;
case (a < b): res[1]++; break;
case (a == b): res[2]++; break;
}
}
document.write(`
<p>
<b>Player 1</b> (${player1.dice} × d${player1.faces}): ${res[0]} wins<br>
<b>Player 2</b> (${player2.dice} × d${player2.faces}): ${res[1]} wins<br>
<b>Draws:</b> ${res[2]}<br>
Chances for Player 1 to win:
~${Math.round(res[0] / eval(res.join('+')) * 100)} %
</p>
`);
}
 
let p1, p2;
 
p1 = new Player(9, 4),
p2 = new Player(6, 6);
contest(p1, p2, 1e6);
 
p1 = new Player(5, 10);
p2 = new Player(6, 7);
contest(p1, p2, 1e6);
</lang>
{{out}}
<pre>
Player 1 (9 × d4): 572753 wins
Player 2 (6 × d6): 356478 wins
Draws: 70769
Chances for Player 1 to win: ~57 %
 
Player 1 (5 × d10): 643127 wins
Player 2 (6 × d7): 312151 wins
Draws: 44722
Chances for Player 1 to win: ~64 %
</pre>