Я думаю, что вам нужна функция
sample.int(10, n= 20, replace = TRUE)
Это действительно зависит от того, что вы хотите смоделировать.Если вы хотите увидеть, насколько вероятен результат, учитывая определенное количество бросков (то есть, если я использую этот модификатор, то он лучше другого, учитывая урон, который я нанесу в следующие двадцать часов игры), здесь вы должны использовать вышеупомянутую функциюи симулируйте как можно больше бросков (т.е. 1000 или больше).Второй вариант - вы хотите увидеть вероятность результата в целом (то есть, если мне нужно бросить выше 18, какова вероятность того, что я брослю это)?В этом случае вероятность броска числа составляет 1/20, так как у вас есть D20.
Однажды я сделал похожую вещь: мой симулятор был сделан со случайными бросками, чтобы увидеть, насколько вероятна комбинация, чтобы дать игрокам представление о том, как их модификаторы будут работать в долгосрочной перспективе.Но в этом случае помните, что случайные числа никогда не бывают действительно случайными (есть лучшие и худшие пакеты).
Редактировать:
Для обхода повреждений вы можете использовать цикл for:
for (modifier in -5:5){
result_tot = prop.table(table(roll + modifier))
}
Проблема в том, что я никогда не работал с data.tables и некажется, в состоянии объединить все различные таблицы, которые создаются.В приведенном выше примере каждый цикл перезаписывает таблицу result_tot.Поэтому вам необходимо распечатать его раньше или найти способ объединения полученных таблиц.