12d3 vs 6d6
by nazarpunk
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.5.1/chart.min.js"></script>
<canvas id="chart"></canvas>
JavaScript
const max = 12 * 3;
const _12d3_chance = 1 / (3 ** 12);
const _6d6_chance = 1 / (6 ** 6);
const _12d3_array = new Array(max).fill(0);
const _6d6_array = new Array(max).fill(0);
for (let _1 = 1; _1 <= 3; _1++) {
for (let _2 = 1; _2 <= 3; _2++) {
for (let _3 = 1; _3 <= 3; _3++) {
for (let _4 = 1; _4 <= 3; _4++) {
for (let _5 = 1; _5 <= 3; _5++) {
for (let _6 = 1; _6 <= 3; _6++) {
for (let _7 = 1; _7 <= 3; _7++) {
for (let _8 = 1; _8 <= 3; _8++) {
for (let _9 = 1; _9 <= 3; _9++) {
for (let _10 = 1; _10 <= 3; _10++) {
for (let _11 = 1; _11 <= 3; _11++) {
for (let _12 = 1; _12 <= 3; _12++) {
_12d3_array[_1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 - 1] += _12d3_chance;
}
}
}
}
}
}
}
}
}
}
}
}
for (let _1 = 1; _1 <= 6; _1++) {
for (let _2 = 1; _2 <= 6; _2++) {
for (let _3 = 1; _3 <= 6; _3++) {
for (let _4 = 1; _4 <= 6; _4++) {
for (let _5 = 1; _5 <= 6; _5++) {
for (let _6 = 1; _6 <= 6; _6++) {
_6d6_array[_1 + _2 + _3 + _4 + _5 + _6 - 1] += _6d6_chance;
}
}
}
}
}
}
let _12d3_sum = 0;
let _6d6_sum = 0;
for (let i = 1; i <= max; i++) {
_12d3_sum += i * _12d3_array[i - 1];
_6d6_sum += i * _6d6_array[i - 1];
if (_12d3_array[i - 1] === 0) _12d3_array[i - 1] = null;
if (_6d6_array[i - 1] === 0) _6d6_array[i - 1] = null;
}
const label = (dice, chance, sum) => `${dice} шанс: ${chance.toFixed(6)}, средний дайс: ${sum.toFixed(2)}`;
new Chart('chart', {
type: 'line',
data: {
labels: [...new Array(max)].map((_, i) => i + 1),
datasets: [{
label: label(`12d3`, _12d3_chance, _12d3_sum),
data: _12d3_array,
borderColor: 'rgb(0, 255, 0)',
tension: .2
...