Реализуйте программу или функцию, которая имитирует обычные кости для ролевых игр. Он должен обрабатывать как минимум d6 и d20, два самых распространенных кубика.
Тем не менее, он должен работать так, как ожидают от него стереотипные геймеры, а не как настоящая игра в кости.
Это игра в шутку между игроками, что можно получить особенно удачный кубик для очень очень важного броска, предварительно бросив много кубиков, выбрав те, которые привели к «1», затем бросая их снова, пока вы не получите несколько, которые бросили "1" несколько раз. Затем вы тщательно сохраняете их, потому что они бросают 1 несколько раз подряд, поэтому вероятность бросить 1 в следующий раз должна быть чрезвычайно низкой.
Конечно, это не так, как кости работают в реальной жизни , потому что броски являются статистически независимыми.
Ваши смоделированные кубики должны учитывать предыдущие броски и работать так же, как и игрок, ошибочно полагая, что он сработает. Например, если выпало много младших чисел, вероятность увеличения большего числа должна быть увеличена.
Однако, поскольку это обман, вы должны хорошо это скрывать . Это означает, что случайный взгляд на программу не должен показывать, что вы обманули. Это означает, что явно сохранять предыдущие результаты и читать их при каждом броске было бы слишком подозрительно. Вы должны скрыть это «свойство» ваших костей и бонусные очки, если вы сделаете его правдоподобным, отрицающим и замаскируете его как честную ошибку. (например, вы делаете свой собственный ГСЧ с «непреднамеренным» недостатком)
Избиратели, примите во внимание, насколько хорошо скрыт этот «недостаток».
Программы должны быть понятными, а не запутанными. Слишком легко спрятать злой код в запутанной программе.
getRandomBetween(1,d)
заставило бы меня глубже вникнуть в это.