В основном мне приходится использовать случайную функцию, которая может возвращать число от 0 до 2^16-1.
Я пытаюсь использовать это и генерировать, скажем, 6 интервалов между 1 и 6 (думая о покере с костями). В основном используйте тот номер, который сгенерирован для меня случайным образом (я могу указать только диапазон), и желательно, чтобы он вызывался только один раз. Затем возьмите это число и «разделите» его на 6 кубиков, где значения будут находиться в диапазоне от 1 до 6.
Я немного не уверен в технике, которую можно было бы использовать, одна вещь, которая приходит на ум, это битовая маскировка, но я не уверен, что это правильный контекст.
С бинарной точки зрения разумно иметь значения костей от 0 до 5. Это дало бы нам двоичное число 000-101. Теперь максимальное значение возвращаемой случайной функции будет 101101101101101101 (шесть игральных костей, каждая из которых равна «6»), а в десятичном виде это означает, что верхняя граница случайного целочисленного возврата будет равна 187245. Нижняя граница будет равна 0. Теперь скажем, Функция random возвращает нам число 66508, переводя его в двоичную форму, мы получаем 010|000|001|111|001|100, а этого недостаточно! В этом случае один из кубиков будет 111 = 7, и мы не можем получить это, когда интервал должен быть 0-5 (1-6) :(
Мне нужно выяснить, как десятичная дробь в пределах диапазона может содержать шесть кубиков со значениями 1-6 (0-5), но мне нужна помощь.