Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Как бы вы сгенерировали случайное число от 1 до 7, имея всего один шестигранный кубик?

ПрограммированиеМатематика+3
Анонимный вопрос
Data Science
  · 50,6 K
кандидат физико-математических наук, математик, исследователь, data scientist, предпринима...  · 22 дек 2021  · novikovlabs.ru
Бросаю кубик дважды и конкатенирую результаты.
Могут получиться результаты от 11 до 66 с пропусками.(всего 36 чисел)
Нахожу остаток от деления на 7 получившегося числа
14, 21, 35, 42, 56, 63 дают 0
15, 22, 36, 43, 64 дают 1
16, 23, 44, 51, 65 дают 2
24, 31, 45, 52, 66 дают 3
11, 25, 32, 46, 53 дают 4
12, 26, 33, 54, 61 дают 5
13, 34, 41, 55, 62 дают 6
В случае выпадкееия сочетания 63 - перебрасываю заново, в остальных случаях говорю, что получаю остаток от деления +1
Таким образом с вероятностью 35/36 завершаю генерацию за одну итерацию.
6 экспертов согласны
Да, с единственным замечанием, что нет гарантии закончить генерацию за конечное время
@Вадим Романский, с гарантией "почти наверное" закончить.
Распределение не будет равномерным.
Получить равновероятно натуральное число от 1 до 7 из 6 натуральных чисел в принципе невозможно от слова совсем. Ну математику, знакомому с теорией вероятностей это надо знать. Советую хотя бы познакомиться с теорией вероятностей.
А если кидать кубик не один раз, то о равной вероятности можно и не мечтать.
@Сергей Чабовский, нет, ошибаетесь тут вы. Получится самое настоящее равномерное распределение. Просто нет гарантии, что мы сможем завершить генерацию за один шаг.
Чтобы вы поняли идею продемонстрирую все то же самое, но с генерацией семи чисел с помощью орлянки.
Будем считать результаты броска монетки - заполнением позиции в бинарной системе счисления Орел - 0, Решка - 1.
Тогда мы за три броска с одинаковой вероятностью получаем 8 результатов
000; 001; 010; 011
100; 101; 110; 111
После чего вводим правило, что при выпадении трех нулей подряд (000) считаем, что результат не получился и генерацию мы должны начать заново.
В таком случае вероятность завершить алгоритм за одну итерацию из трех бросков 7/8, а результаты, которые мы при этом получаем распределены равномерно с вероятностью 1/7.
При этом мат ожидание количества итераций из серий трех бросков рассчитывается как
7/8×1+1/8×(2×7/8+1/8×(3×7/8+...
Что легко привести к ряду
7/8×(1+2×(1/8)+3×(1/8)²+4×(1/8)³+...)
Формула для выражения в скобках известна поскольку это ряд для производной от 1/(1-x), то есть ряд 1/(1-х)².
Получаем, что среднее яисло итераций в алгоритме равно 7/8×1/(7/8)²=8/7.
Прекрасно! Однако если есть вычисления, и тем более деление по модулю, то тогда и вовсе без кубика можем обойтись:
"Генератор псевдослучайных чисел" (бросить нужно первый раз (или несколько раз, для генерации первого числа), можно так же иногда бросать, чтобы усилить равномерность)
А ещё круче (может быть) шесть разных генераторов псевдослучайных чисел, выбор результата по кубику.
Вот например, простейший ГСЧ:
X(i) = a * X(i-1) mod m
(для любителей Excel A2=ОСТАТ(A1*48271;2147483647))
a=48271
m=2147483647
Показания для кубика Q=X(i) mod m +1
@Александр Сергеевич Македонский, в целом согласен. На самом деле мой вариант просто эквивалентен другому с более простыми правилами с точностью до перестановок.
Если погуглить, то вот что предлагает первая ссылка. TL;DR:
бросьте кубик 2 раза, пусть на первом кубике выпало X, на втором Y
если X<6, то ваше случайное число равно Y
если X=6 и Y<6, то ваше случайное число равно 7
если X=Y=6, то вернитесь к шагу 1
Добавлю еще один комментарий, чтобы наконец закончить обсцждение недостатков этого решения.
Распределение получающихся при такой генерации величин БУДЕТ равномерным.
Проблема в том, что потенйиальное время исполнения иничем не ограничено, может быть и такое (на бесконечном масштабе), что алгоритм не прекратит исполнения и не сгенерирует ответа (но вероятность этого - ноль). Почти наверное алгоритм закончится. Среднее время исполнения в нем 36/35 попыток состоящих из двух бросков.
Для сравнения. Мы можем точно также бросить кубик дважды и заканчивать генерацию только в случаях выпадения комбинаций
(1,1), (2,2), (3,3), (4,4), (5,5),(6,6), (6,1), отвечающих, соответственно, за числа от 1 до 7.
Вероятность закончить алгоритм по таким правилам за одну итерацию из двух бросков равна 7/36, не закончить - 29/36.
И тогда среднее количество итераций необходимых для генерации одного числа будет
7/36×1+29/36×(2×7/36+29/36×(3
=
7/36×(1+2×(29/36)+3×(29/36)²+...)
=
7/36/(1-29/36)²
=
36/7,
То есть в среднем чуть больше пяти попыток бросить кубик два раза, чтобы получить одно число от 0 до 7.
Проблема алгоритма не в неравномерности, а в том, что проблема остановки в нем решается вероятностным способом.
Автор удалил комментарий
вариант
Если погуглить, то вот что предлагает первая ссылка. TL;DR:
бросьте кубик 2 раза, пусть на первом кубике выпало X, на втором Y
если X<6, то ваше случайное число равно Y
если X=6 и Y<6, то ваше случайное число равно 7
если X=Y=6, то вернитесь к шагу 1
Ему полностью эквивалентен. в правиле просто меняется перестановка чисел.
Кандидат физико-математических наук, выпускник ШАД  · 22 дек 2021
Если погуглить, то вот что предлагает первая ссылка. TL;DR:
  1. бросьте кубик 2 раза, пусть на первом кубике выпало X, на втором Y
  2. если X<6, то ваше случайное число равно Y
  3. если X=6 и Y<6, то ваше случайное число равно 7
  4. если X=Y=6, то вернитесь к шагу 1
6 экспертов согласныи1 эксперт не согласен
Эдак можно до бесконечности возвращаться!
Сингулярист, любитель занимательной математики, распространитель идей  · 22 дек 2021
Возможно автор имел ввиду за одно выкидывание кубика? Тогда возможно, начиная со второго выкидывания такую тактику предлагаю, к первому выкидыванию(вне зачёта) прибавлять второе и вычитать 5 - результат и "в зачет", следующее выкидывание прибавляем к предыдущему (и вычитаем 5) итд - вот такой рекуррентный способ. Не уверен пока что случайное число... upd2015221221 а)Если... Читать далее
Инженер-радиофизик, преподаватель физической культуры и спорта  · 6 мая 2022
Реально: шестигранный кубик не даёт выпадение числа от 1 до 6 с равной вероятностью, так как нельзя получить идеальный куб ещё и с центром масс в центре куба, изготовленный с «допусками и посадками». Поудалял все свои неверные варианты! Утверждаю: эта задача неразрешима, если в условии необходимо получить, выбирая каждый раз числа от 1 до 6 с равной вероятностью, и... Читать далее
Специалист ИТ с физмат образованием  · 24 дек 2021
Вариантов очень много.
Надо проштудировать раздел теории вероятности по работе со случайной величиной.
Имея случайную величину x={1...6} с равномерным распределением можно состроить все что угодно при условии что вы не ограничены в числе повторно используемых величин x
Фундаментальный вопрос рациональности: почему ты веришь в то, во что веришь?Перейти на hpmor.ru
1 эксперт согласени1 эксперт не согласен
Зачем тогда что-то доказывать, если получится чтоугодный результат.
Веб-разработчик, геймер, специалист по этике  · 22 дек 2021
Вам какое распределение вероятностей нужно-то? Равномерное, нормальное? ;) Это важная деталь. Для равномерного распределения нам нужен способ генерировать события с вероятностью 1/7 каждое. Перемножим 7 и 6 получим 42. Броски кубика независимы. Поэтому можно считать, что каждый бросок покрывает отдельную часть пространства состояний. Бросаем кубик 7 раз. Каждый бросок... Читать далее
2 эксперта не согласны
если мы кидаем кубик 7 раз подряд, то пространство исходов такого действия состоит из 6**7=279936 (6^7) точек, а... Читать дальше
Научные заметки о жизни: zen.yandex.ru/id/5c43498395753900ac66852d  · 16 янв 2022
Бросаем кубик 7 раз. Результат - номер броска давший максимальный результат. Если таких несколько, то выбираем между ними аналогичным образом.
Такая схема работает хоть с кубиком, хоть с монетой.
1 эксперт согласени1 эксперт не согласен
Числа случайные, но неравновероятны.
Хороший парень.. веселый такой  · 22 дек 2021
Здесь имеется ввиду без 7. Просто подбросил бы кубик и отобразилось бы случайное число от 1 до 6. Вот т всн. Все просто. Вопрос с подвохом конечно
2 эксперта не согласны
с чего вы взяли, что имелось в виду без семи
Инженер-программист  · 22 дек 2021
Бросить кубик несколько раз и разбить вероятный диапазон выпадения на несколько участков, равных по вероятности выпадения. К примеру, общее кратное у 6 и 7 - 42. Получаем диапазон 7-42. 7-11 считать как 1, 12-16 считать как 2 и т.д. 42 считать как переброс
1 эксперт не согласен
Числа неравновероятны