Знаете ли вы или разработали какие-либо практические, простые для изучения алгоритмы «в голове», которые позволяют людям генерировать (несколько «истинные») случайные числа? Под «головой» я подразумеваю .. желательно без каких-либо внешних инструментов или устройств. Также желателен высокий выход (много случайных чисел в минуту).
Спросил это на SO, но это не вызвало особого интереса. Может быть, это лучше подходит для программистов.
self-improvement
algorithms
random
Магнус Вольффелт
источник
источник
Ответы:
Вот алгоритм от Джорджа Марсалья :
источник
Проверьте эту статью о геомантии . В частности, раздел о создании геомантических карт . Он включает в себя метод генерации псевдослучайных чисел с использованием двоичных цифр и некоторых простых рекурсивных вычислений. Кажется, что вы можете сделать это в своей голове довольно легко (хотя лист бумаги поможет).
Отказ от ответственности: я сам не пробовал; когда мне нужно достаточно случайное число, я либо получаю какой-то вывод
/dev/random
, использую егоrand
на любом удобном для меня языке, либо бросаю свой верный d20.Если вы вундеркинд, метод средних квадратов является довольно вычислительным, хотя и ненадежным методом.
источник
Я думаю, что разумным предположением является то, что вы должны полагаться на огромное количество словесной информации, которую вы храните в своем мозгу. Источником может быть что угодно, текст песни, стихи, наброски Монти Пайтона, но это должно быть то, что вы знаете наизусть.
Затем вы должны выбрать довольно случайную его часть, максимально исключив неосознанную предвзятость. Например, для этого можно выбрать песню, выбрать число
k
от 10 до 20, а затем найтиk
букву th в ее тексте.Очевидно, что это не даст вам равномерного распределения само по себе, поскольку частота писем различна, но, тем не менее, это случайное письмо, или, по крайней мере, настолько близкое к нему, насколько я думаю, возможно без внешнего источника.
Обновление: кстати, когда людей просят написать случайную последовательность, скажем, бросков монет, самая распространенная ошибка на сегодняшний день - сделать вашу последовательность «слишком случайной»: серии с одинаковыми результатами будут слишком короткими, что является простой длиной цикла. анализ покажет. Этот метод в основном направлен на то, чтобы избежать этой ловушки. Конечно, другие аномалии могут возникать из-за этого смещения длины пробега, но вам понадобятся соответствующие эксперименты, чтобы найти их. По иронии судьбы, алгоритм генерации случайных чисел с помощью одного мышления не может быть найден одним только мышлением.
источник
Попробуйте ваши часы.
Я делаю это, если мне нужно случайное число с коэффициентом 60 (секунд). Возьмите соответствующий модуль по времени. 4:17:23 вечера, имитируя бросок кубика, становится 5.
источник
Отличный вопрос. Боюсь, что хороший ответ может оказаться очень сложным.
Но для начала довольно просто генерировать «истинную» случайность, когда в нее вовлечены два человека: просто пусть один из них молча посчитает в модуле своей головы какое-то число, а другой скажет «остановиться» через произвольный интервал. После этого это число можно преобразовать в другие дистрибутивы стандартными методами.
Чтобы сделать этот метод устойчивым, модуль не должен быть слишком большим, иначе будет сильное смещение против небольших чисел. Мне действительно было бы интересно узнать, существует ли какая-либо работа, анализирующая стохастические свойства этого метода.
источник
Это сложный вопрос; Я постараюсь объяснить немного, не уходя слишком далеко в сорняки.
Во-первых, мы должны спросить «что такое настоящая случайность»? Такие дискуссии быстро вырождаются в философские воды, но суть в том, что «вселенная действительно случайна»? Другими словами, если вы квантоваете время и материю, можете ли вы вычислить следующее состояние вселенной из текущего? Если да, то вселенная детерминирована и в ней нет случайности (понимаете, что я имею в виду под «философским»?)
Поскольку «истинную случайность» трудно определить, мы часто соглашаемся на «псевдослучайность». Это обычно требуется при генерации «случайных» чисел на компьютере, конечно.
Простейшим генератором псевдослучайных чисел было бы что-то вроде знаменитого алгоритма Дилберта «9 .. 9 .. 9 ..». Но интуитивно это не кажется очень хорошим (что, конечно, шутка). Статистики разработали целый ряд тестов, чтобы сказать, является ли последовательность предположительно случайных выходных данных «хорошей». Начните со страницы Википедии для «теста хи-квадрат», и вы можете провести день, просто читая об этих тестах.
Простой компьютерный алгоритм, такой как «линейный конгруэнтный генератор», выдает числа, достаточно хорошие для теста хи-квадрат (однако, вам все равно нужно «отобрать» этот алгоритм из чего-то).
Следующим шагом в «доброте» является «криптографически сильная случайность», что означает, что при заданной последовательности a1, a2, ... вы не можете предсказать следующее число в последовательности с «разумной вероятностью», если не будете использовать много вычислений. Эти числа иногда называют «вычислительно псевдослучайными». Один из распространенных способов получения такой последовательности - через «хэш-цепочку», подобную этой: a1 = SHA512 (a2), a2 = SHA512 (a3), ... Поскольку мы считаем (основываясь на опыте, а не математическим доказательством), что SHA512 вычислительно трудно инвертировать, мы считаем, что a2 «невозможно» предсказать, учитывая только a1.
Итак, теперь возникает вопрос: что лучше всего делать людям по правилам, изложенным в вашем вопросе? Люди, как известно, плохо генерируют случайность; раньше был веб-сайт, на котором вы пытались бы генерировать броски монет, «случайным образом» печатая H, T, T, H, H, T, T и т. д., как если бы вы подбрасывали монету (но вы делаете это в твоя голова). Через некоторое время веб-сайт начнет предсказывать ваши сальто лучше, чем в 50% случаев (используя скрытую марковскую модель). Мы просто плохи в этом.
Существуют способы улучшить ситуацию, используя различные методы смешивания, которые, вероятно, выполнимы в вашей голове. И есть даже приложения, которые я мог бы придумать, зачем вам это нужно (политзаключенный хочет зашифровать сообщение сторонним союзникам). Но я думаю, что этот пост достаточно длинный. :)
источник
Сама причина распространения RNG на основе инструментов заключается в том, что хороший внутренний алгоритм для генерации случайных чисел еще не разработан .
К счастью, портативные генераторы случайных чисел - включая монеты для флоппинга, кости (с различным числом граней) для катания, карты для сбора и соломинки для рисования - относительно легко получить при низких затратах. Более того, для технофилов среди нас есть несколько довольно хороших симуляций этих инструментов, доступных для большинства мобильных платформ.
Я бы от всей души порекомендовал любой из них по сравнению с любой альтернативой мясной посуды.
источник
Высоко рандомизированное, большое количество в минуту и генерируется людьми? Не случится
Основные проблемы, с которыми вы столкнетесь:
Это привело к тому, что многие криптографы отказались от методов «в голове» в пользу случайных внешних процессов, потому что было слишком просто разрабатывать шаблоны, основанные на числах «в голове».
Не по теме, но интересно
Хотя это не механизм для генерации случайных чисел в голове, то алгоритм Solitaire (как изображается в Нил Стивенсон Криптономикона ) демонстрирует , насколько трудно использовать случайные числа для криптографических целей. Для создания достаточно безопасного выхода требуется только колода обычных игральных карт, но метод достаточно сложный.
источник
Пожалуйста, отойдите от стола и отправляйтесь в Лас-Вегас.
Человечество имеет десятки рандомизированных процедур. Вы можете увидеть их все в Лас-Вегасе.
У вас есть вращающиеся круги. У вас есть кувыркающиеся кубики. И вы перетасовали токены. Все они работают на удивление хорошо.
Кубики, пожалуй, самые старые. Очевидно, в одной точке использовались удлиненные 4-сторонние палки. Симметричные кубические суставы овец были популярны в течение тысячелетий. Мы использовали такие рандомизаторы с тех пор, возможно, в то же время, когда разрабатывали язык.
http://itunes.apple.com/us/app/motionx-dice/id287509231?mt=8
«Любой, кто рассматривает арифметические методы получения случайных цифр, конечно, находится в состоянии греха»
--- Джон фон Нейман
источник
Я не могу думать ни о чем. На самом деле я ожидаю, что все, что вы придумали, будет иметь столько предубеждений, что будет бесполезным.
Если мне нужны случайные числа, я обычно бросаю кости.
источник
Вы просите LCM, который вы можете сделать в своей голове? Обратите внимание, что идея, что это лучше, чем игра в кости, остается абсурдной.
Тем не менее, это настолько случайно, насколько может быть любой конечный, определенный и эффективный алгоритм.
http://www.vias.org/simulations/simusoft_lincong.html
http://www1.i2r.a-star.edu.sg/~knandakumar/nrg/Tms/Probability/Probgenerator.htm
U_ {k + 1} = (a \ times U_k + b) mod (m + 1).
Легче увидеть, что это делает, если мы выберем маленькие значения a = 5, b = 1 и m = 7. Вы должны быть в состоянии сделать это в своей голове.
источник