Обсуждение:りゅうたま: natural fantasy R.P.G.
Таблица вероятностей[править]
Таблица вероятностей получена таким кодом:
const размерыКостей = [4, 6, 8, 10, 12];
const целевыеЧисла = [4, 6, 8, 10, 12, 14, 16, 18, 20];
const вероятностьУспеха = (размер1, размер2, целевоеЧисло) => {
let броски = 0;
let успехи = 0;
for (let знач1 = 1; знач1 <= размер1; знач1++) {
for (let знач2 = 1; знач2 <= размер2; знач2++) {
броски++;
const критическийУспех = (знач1 === 6 && знач2 === 6) || (знач1 === размер1 && знач2 === размер2);
if (знач1 + знач2 >= целевоеЧисло || критическийУспех) {
успехи++;
}
}
}
return успехи / броски;
};
const вПроцентах = (число) => (Math.floor(число * 10000) / 100).toString().replace('.', ',') + '%'
const ссылкаНаТипКости = (размер) => размер === 20 ? '[[Кость d20|d20]]' : `[[d${размер}]]`
const рядВероятностей = (размер1, размер2, объединённыйСПредыдущими) => '| ' + [
...(объединённыйСПредыдущими ? [] : [
` rowspan="${размерыКостей.length}" | ${ссылкаНаТипКости(размер1)}`
]),
ссылкаНаТипКости(размер2),
...целевыеЧисла.map((целевоеЧисло) => вПроцентах(вероятностьУспеха(размер1, размер2, целевоеЧисло)))
].join(' || ');
const рядыДляВторогоРазмера = (размер1) => размерыКостей.map((размер2, индекс) => рядВероятностей(размер1, размер2, индекс !== 0)).join("\n|-\n")
const содержаниеТаблички = размерыКостей.map(рядыДляВторогоРазмера).join("\n|-\n")
const заголовокТаблички1 = '!' + [
'colspan="2" | Бросаемые кости',
`colspan="${целевыеЧисла.length}" | Целевое число`,
].join(' !! ')
const заголовокТаблички2 = '!' + [
'Первая',
'Вторая',
...целевыеЧисла,
].join(' !! ')
const табличка = [
'{| class="wikitable" style="margin:auto"',
заголовокТаблички1,
заголовокТаблички2,
содержаниеТаблички + '\n|}',
].join("\n|-\n");
console.log(табличка)
Надеюсь, что в нём нет ошибок :D Demetrius (обсуждение) 12:41, 18 августа 2025 (MSK)