Published
Edited
Dec 26, 2019
Importers
1 star
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
rollNSidedDice = function(sides) {
return Math.floor(Math.random() * (sides) ) + 1;
}
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
rollNdN = function(noOfDice, sides) {
var rolls = []
for(var i = 0; i < noOfDice; i++){
rolls.push(rollNSidedDice(sides))
}
return rolls;
}
Insert cell
Insert cell
Insert cell
Insert cell
function simulateRolls(quantity, sides, simulations) {
var rolls = []
for (var i = 0; i < simulations; i++) {
rolls.push(rollNdN(quantity, sides))
}
return rolls;
}
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
allPossible2d6Results = (function() {
var rolls = []
for (var i = 1; i <= 6; i++) {
for (var j = 1; j <= 6; j++) {
rolls.push([i, j])
}
}
return rolls
}())
Insert cell
Insert cell
Insert cell
allPossible3d6Results = (function() {
var rolls = []
for (var i = 1; i <= 6; i++) {
for (var j = 1; j <= 6; j++) {
for (var k = 1; k <= 6; k++) {
rolls.push([i, j, k])
}
}
}
return rolls
}())
Insert cell
Insert cell
Insert cell
Insert cell
allPossible3dNResults = {
var noOfSides = bruteForceThreeDice.sides
var rolls = []
for (var i = 1; i <= noOfSides; i++) {
for (var j = 1; j <= noOfSides; j++) {
for (var k = 1; k <= noOfSides; k++) {
rolls.push([i, j, k])
}
}
}
return rolls
}
Insert cell
Insert cell
Insert cell
function bruteForceAllNdNCombinations(sides, quantity){
var rolls = []

if (quantity > 1) { // if there is more than one dice to roll
var nMinus1Rolls = bruteForceAllNdNCombinations(sides, quantity-1)
nMinus1Rolls.forEach(roll => {
for (var i = 1; i <= sides; i++) {
rolls.push(roll.concat(i))
}
})
} else { // if we are only rolling 1 dice
for (var i = 1; i <= sides; i++) {
rolls.push([i])
}
}

return rolls
}
Insert cell
viewof ndnInput = multiNumberInput([
{name: 'sides', default: 6, min: 1, max: 100},
{name: 'quantity', default: 6, min: 1, max: 100},
],
"roll"
)
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more