Алгоритм генерації випадкових чисел для людського мозку? [зачинено]


37

Чи знаєте ви, чи ви створили будь-які практичні, прості в навчанні алгоритми, що дозволяють зрозуміти людині, які дозволяють людині генерувати (дещо «справжні») випадкові числа? Під «головою» я маю на увазі .. бажано без будь-яких зовнішніх інструментів чи пристроїв. Також бажаний високий вихід (багато випадкових чисел в хвилину).

Запитав про це, але це не викликало особливого інтересу. Можливо, це краще підходить програмістам.


7
@ S.Lott Я не думаю, що це зовсім абсурдно. Непрактично? Чому, звичайно. Абсурдні? Звичайно, ні. І навіть якби це було, абсурд може прокласти шлях до нових, корисних думок.
biziclop

21
9 .... 9 .... 9 .... 9 - Ви не можете довести, що це не випадково.

13
С.Лотт: Ідея простого обчислення генератора псевдовипадкових чисел зовсім не абсурдна. Я думаю, що ОП хоче отримати спосіб уникнути людських упереджень ....
Єнс

8
Мені здається смішним (і в той же час трохи пригнічуючим), скільки людей, здається, цінують аргумент невігластва. "Я не можу це уявити, отже, він не може існувати", або відповіді, які цілком пропускають суть.
biziclop

4
Це питання видається поза темою, оскільки йдеться про когнітивні здібності людини, а не програмування.

Відповіді:


36

Ось алгоритм Джорджа Марсалія :

Виберіть двозначне число, скажімо, 23, ваше "насіння".

Створіть нове двоцифрове число: цифру 10 плюс 6 разів більше одиниці.

Приклад послідовності - 23 -> 20 -> 02 -> 12 -> 13 -> 19 -> 55 -> 35 -> ...

і його період є порядком множника, 6, у групі залишків, відносно простих до модуля, 10. (59 у цьому випадку).

"Випадкові цифри" - це одиничні цифри двоцифрових чисел, тобто 3,0,2,2,3,9,5, ... послідовність моди 10. Арифметика досить проста для виконання у вашому голова.


Це дуже добре звучить.
biziclop

4
Це може не бути проблемою для потреб конкретної людини, але це дає лише 90 різних потоків.
комман

5
79, 79, 79, 79, 79, 79, 79, 79, 79, 79, о, ні! Я припускаю, що ви повинні залишитися <= 60, що добре виходить, оскільки ви можете використовувати годинник для насіння, якщо у вас його немає.
едс

4
@eds Гм, що? 79 -> 61 -> 15 -> ...
Ізката

1
Можливо, @eds означав 59. Усі цифри від 1-58 видаються чесною грою.
Ерханніс

26

Перегляньте цю статтю про Геоманство . Зокрема, розділ про створення геометричних діаграм . Він включає техніку генерування псевдовипадкових чисел за допомогою двійкових цифр та простий рекурсивний обчислення. Здається, ви могли зробити це в голові досить легко (хоча аркуш паперу допоможе).

Відмова: Я сам цього не пробував; коли мені потрібна достатньо випадкова кількість, я або отримую якийсь результат /dev/random, використовую randбудь-якою мовою, яку я вам підручив, або перекачую свій надійний d20.

Якщо ви мандрівник з математики, метод Середнього квадрату - це досить обчислювально легкий, якщо помітно ненадійний метод.


3
+1 Я думаю, що це перша серйозна відповідь на це питання. Трохи сумно.
Єнс

@Magnus Wolffelt - я пам’ятав, що його згадували у розмові TED Рона Еглаша про культурне значення фрактальної геометрії в Африці; "Баманська піщана ворожіння". Це досить цікаво, хоча я досі не маю уявлення, для чого ти зараз би використовував цю техніку, коли нам більше не потрібні віщуни. ted.com/talks/ron_eglash_on_african_fractals.html
Інаіматі

1
Наскільки я бачу, цей геометричний метод просто дозволяє «покращити» (я вважаю, що «дебії» були б кращим терміном) джерелом випадковості. Не чхати, але не дуже те, що шукала ОП. Що не скажеш, що це не дуже ....
Норман Грей,

@Norman Grey - Людський мозок за замовчуванням може створити упереджені довільні числа.
Inaimathi

@Inaimathi Саме так: саме тому дебізування чисел буде важливим, і чому метод, на який ви вказали, є корисним. Або я вас нерозумію.
Норман Грей

10

Я думаю, що обгрунтоване припущення полягає в тому, що ви повинні покладатися на величезну кількість словесної інформації, яку ви зберігаєте у своєму мозку. Джерелом може бути що завгодно, тексти пісень, вірші, ескізи Монті Пітона, але це має бути щось, що ви знаєте напам’ять.

Тоді ви повинні вибрати досить випадкову її частину, максимально усуваючи несвідомі упередження. Наприклад, наприклад, це вибрати пісню, вибрати число kвід 10 до 20 і потім знайти цю kлітеру в тексті.

Очевидно, це не дасть вам рівномірного розподілу саме по собі, оскільки частота букв різна, але все-таки це випадкова літера або, принаймні, настільки близька до неї, як я вважаю, можлива без зовнішнього джерела.

Оновлення: До речі, коли людей пропонують написати випадкову послідовність сказування монети, найпоширеніша помилка на сьогоднішній день - це зробити свою послідовність "занадто випадковою": пробіги однакових результатів будуть занадто короткими, що простий запуск тривалості аналіз виявить. Цей метод в основному спрямований на уникнення цієї пастки. Звичайно, від тіні цього зміщення довжини пробігу можуть виникати інші аномалії, але для їх пошуку потрібні відповідні експерименти. Дещо іронічно, алгоритм генерації випадкових чисел, думаючи один, неможливо знайти, думаючи поодинці.


Навіть тоді я б очікував, що ви будете упередженими в декількох тонких способах. (IE прагне вибрати ту саму групу пісень)
Zachary K

@Zachary K Без сумніву, але тоді вам також доведеться вибрати номер, який трохи поширює його. Хоча упередженість ніколи не може бути усунена, цей метод майже напевно заважає вам знати, яку літеру ви виберете (хоча з часом ви зобов'язані запам'ятати деякі).
biziclop

Eini mini miny moe, як ми звикли робити як діти.
Захарій К

2
"вибрати число k між 10 і 20". 17. Найменше випадкове число.
S.Lott

@ S.Lott Не має значення, наскільки випадкове це число. Єдина причина, яка вам потрібна, це те, що ви схильні запам'ятовувати перші кілька букв речі легше.
biziclop

9

Зразки годинника.

Я роблю це, якщо мені потрібно випадкове число, яке є коефіцієнтом 60 (секунди). Візьміть відповідний модуль у будь-який час. 16:17:23, імітуючи штамповку, стає 5.


І за велику кількість за хвилину?
Гері Роу

Не впевнений, що я слідую. Ви говорите, складіть пул чисел 3600, включивши хвилини? Я здогадуюсь, але чим більше число, тим менш випадковим було б? Наче ви не могли швидко взяти зразки так легко.
Марк Канлас

1
@Gary Rowe Цей критерій повинен бути скасований Боюся, просто тому, що незалежно від використовуваного методу, людський мозок просто занадто повільний.
biziclop

Вибачте, мені було просто цікаво, як працює ваш підхід, якщо вам потрібно більше 60 номерів на хвилину. Заднім числом, попросивши людський мозок створити стільки чисел за хвилину, все одно вийде максимально, тому не хвилюйтеся про це.
Гері Роу

@biziclop Немає проблем. Схоже, у мене було зіткнення коментарів під час розгляду ситуації з підходом @ Марка.
Гері Роу

5

Відмінне запитання. Я боюся, що хороша відповідь може виявитись дуже важкою.

Але для початку досить просто створити "справжню" випадковість, коли задіяні двоє людей: просто нехай один з людей мовчки рахує деякий номер у головному модулі, а інший каже "стоп" після довільного інтервалу. Згодом це число може бути перетворене в інші розподіли за допомогою стандартних методів.

Щоб зробити цей метод надійним, модуль не повинен бути занадто великим, інакше буде сильна упередженість щодо невеликої кількості. Мені б дуже цікаво подивитися, чи існує якась робота, що аналізує стохастичні властивості цього методу.


Важливо, що підрахунок проводиться швидко, я думаю - людина, що рахує, повинна стежити, щоб не рахувати ритмічно, лише приблизно 1 або 2 кроки в секунду. Тому що для досягнення достатньої кількості ентропії повинно пройти значну кількість циклів (інтуїтивно ≥4) через усі числа.
Аарон Тома

Пропозиція щодо вдосконалення для кращої випадковості : лічильник першим вибирає таємне випадкове насіння X₀ між 0 і модулем; в поєднанні з підрахунком, це повинно забезпечити гідну випадковість при все ж мінімальних мислячих зусиллях (навіть при повільному підрахунку по відношенню до тривалості підрахунку; тобто малій кількості циклів - інтуїтивно ≥2 було б добре; <2 було б добре-іш).
Аарон Тома

4

Це складне питання; Я спробую трохи пояснити, не блукаючи занадто далеко в бур’яні.

По-перше, ми повинні запитати "що таке справжня випадковість"? Такі дискусії швидко перероджуються у філософські води, але суть у цьому: "чи справді Всесвіт випадковий"? Іншими словами, якщо ви квантуєте час і матерію, чи можете ви обчислити наступний стан Всесвіту з поточного? Якщо так, то всесвіт детермінований і справжньої випадковості немає (зрозумійте, що я маю на увазі під "філософським"?)

Оскільки "справжню випадковість" важко визначити, ми часто погоджуємося з "псевдовипадковістю". Звичайно, це потрібно, звичайно, при генерації "випадкових" чисел на комп'ютері.

Найпростіший генератор псевдовипадкових чисел був би чимось на зразок відомого алгоритму "9 .. 9 .. 9 .." Ділберта. Але інтуїтивно це виглядає не дуже добре (що, звичайно, жарт). Статистики розробили цілу низку тестів, щоб сказати, чи є послідовність нібито випадкових результатів "хорошою". Почніть зі сторінки вікіпедії для "тестування на квадрат чи", і ви могли провести південь, читаючи про ці тести.

Простий комп’ютерний алгоритм, подібний до "лінійного конгруентного генератора", дає численні показники, достатньо хороші для тесту чи-квадрата (все ж вам потрібно "викласти" цей алгоритм з чогось, однак).

Наступним кроком у "доброті" є "криптографічно сильна випадковість", що означає, що, задавши послідовності a1, a2, ... ви не можете передбачити наступне число у послідовності з "розумною ймовірністю", якщо ви не використовуєте багато обчислень. Ці числа іноді називають "обчислювально-псевдовипадковими". Один із поширених способів отримання такої послідовності - через такий "хеш-ланцюг", як цей: a1 = SHA512 (a2), a2 = SHA512 (a3), ... Оскільки ми вважаємо (на основі досвіду, а не математичного підтвердження), що SHA512 є обчислювально важко інвертувати, ми вважаємо, що a2 "неможливо" передбачити, заданий просто a1.

Отже, тепер виникає питання, що найкраще робити людині за правилами, передбаченими у вашому запитанні? Люди, як відомо, погано створюють випадковість; там раніше був веб-сайт, на якому ви намагатиметеся генерувати монетки, "випадковим чином", набравши H, T, T, H, H, T, T тощо, як ніби ви перегортаєте монету (але ви робите це в твоя голова). Через деякий час веб-сайт почне прогнозувати ваші перевертання краще за 50% часу (використовуючи модель прихованої Маркова). Ми просто погані в цьому.

Існують способи покращити ситуацію, використовуючи різні методи змішування, які, ймовірно, можна зробити у вашій голові. І є навіть додатки, про які я міг би придумати, чому ви цього хочете (політв'язень хоче зашифрувати повідомлення стороннім союзникам). Але я думаю, що ця посада досить довга. :)


1
Хоча існування справді випадкового фізичного процесу є відкритим для дискусій (хоча експерименти, пов’язані з парадоксом ЕПР, пропонують позитивну відповідь), теоретичне визначення випадкової послідовності дійсно існує на основі складності Колмогорова.
biziclop

3

Сама причина розповсюдження RNG на основі інструментів полягає в тому, що гарний алгоритм генерації випадкових чисел ще не розроблений .

На щастя, портативні генератори випадкових чисел - включаючи монети для флоппінгу, кістки (з різною кількістю граней) для прокатки, картки для збирання та соломки для малювання - порівняно легко отримати за низьких витрат. Більше того, для технофілів серед нас є кілька досить хороших моделей цих інструментів, доступних для більшості мобільних платформ.

Я б від щирого серця рекомендував будь-яку із них, будь-яку альтернативу м'ясному посуду.


1
І ці фізичні пристрої насправді мають для них непередбачуваний характер, тому в певному сенсі вони є більш випадковими, ніж найкращі комп'ютерні алгоритми.
Омега Кентаврі

( @OmegaCentauri: Звичайно, я бачу, що ти там робив!; O) (Не впевнений, що каламбур був призначений, але мені це подобається. :)) )
Аарон Тома,

3

Сильно рандомізована, велика кількість в хвилину і породжена людиною? Не відбудеться

Основні проблеми, з якими ти зіткнешся, - це

  • Люди нудьгують швидко, тому схеми будуть виникати швидко
  • Людський мозок має багато структури, присвяченої розпізнаванню / створенню візерунків, тому вам доведеться перемогти це
  • Дійсно випадкові числа містять повтори, яких намагаються уникнути люди
  • Людям не годиться велика кількість

Це призвело до того, що багато криптографів відмовилися від методів "в голові" на користь зовнішніх процесів, які були випадковими, оскільки опрацьовувати шаблони, засновані на "голові" числа, було просто занадто просто.

Поза темою, але цікаво

Хоча це не механізм генерації випадкових чисел у вашій голові, алгоритм пасьянсу (як зображено в криптономіконі Ніла Стефансона ) демонструє, як важко використовувати випадкові числа для криптографічних цілей. Для створення досить безпечного виводу потрібен лише пакет звичайних ігрових карт, але спосіб зробити досить складний.


1
Я думаю, це не відповідає на запитання. 4 бали вашої відповіді застосовуються лише в тому випадку, якщо люди намагалися знайти випадкові числа без алгоритму. Я думаю, що ОП знає про це, і це є причиною, чому він запитує алгоритм, який люди можуть зробити в голові і дати хороші результати, тобто не зазнавати проблем, зазначених у вашій відповіді.
FabianB

2

Мені по-справжньому цікаво все, що люди могли зіткнутися з цією проблемою.

Відійдіть від письмового столу та вирушайте до Лас-Вегаса

У людства є десятки процедур рандомізації. Ви можете їх побачити в Лас-Вегасі.

У вас крутяться кола. У вас кубики куляються. І ви перетасували жетони. Всі вони дивовижно працюють.

Кубики, мабуть, найдавніші. Мабуть, в одній точці були витягнуті 4-гранні палички. Симетричні кубічні кісточки овець були популярні тисячоліттями. Ми використовуємо такі види рандомізаторів з, мабуть, приблизно в той же час, коли ми розробили мову.

http://itunes.apple.com/us/app/motionx-dice/id287509231?mt=8

"Кожен, хто розглядає арифметичні методи отримання випадкових цифр, перебуває, звичайно, у стані гріха"

--- Джон фон Нойман


7
Мені не цікаво зовнішні інструменти для генерації випадкових чисел, а швидше головні алгоритми, які можуть покладатися на пам'ять або стимул для генерування справді випадкових чисел.
Магнус Вулффельт

3
не можна загравати кістки в голові
jk.

2
@ jk01: Правильно. Ви також не можете робити випадкові в голові.
S.Lott

@ S.Lott - Я думаю, що ти маєш на увазі сказати: «Типова людина не може генерувати послідовно випадкові числа у своїй голові на високій швидкості, використовуючи наївний метод і не маючи зовнішніх інструментів».
Inaimathi

1
@Inaimathi. Ні, я кажу щось набагато сильніше. Ви не можете робити випадково в голові. Ваш мозок переповнений упередженнями, тому вам потрібен алгоритм. Жоден кінцевий, ефективний, детермінований алгоритм не є випадковим. Ви просто не можете цього зробити. Жоден досить простий алгоритм не є навіть псевдовипадковим, тому ви не можете наблизити випадкові. Кістки невеликі, зручні і мають довгу, довгу історію використання.
S.Lott

1

Я не можу придумати жодного. Насправді я б очікував, що все, що ви придумали, матиме стільки упереджень у цьому, що було б марним.

Якщо мені потрібні випадкові числа, я звичайно котять кістки.


0

Ви просите 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 \ разів U_k + b) mod (m + 1).

Простіше зрозуміти, що це робить, якщо ми виділимо малі значення a = 5, b = 1, m = 7. Ви повинні мати можливість це робити в голові.


Цікаво, чи існує пристойно випадкова версія цього ( лінійний вроджений генератор (LCG) ), що справді легко зробити в голові? a = 1 в ідеалі, a = 2 секунди-в ідеалі. (Мої думки поки що про це в наступному коментарі.)
Аарон Тома

(( Я думав, що a = 1, b прайм, b розумно обраний, може бути більш можливою альтернативою для більших м, які все-таки будуть добре працювати. Тоді я помітив, що це, мабуть, не вірно: для b≈0 або b≈m, це буде пройти досить послідовно через числа, тому я подумав, що відповідь b≈m / 2 є, але потім я помітив, що це також може бути послідовним (для малих | b – m / 2 | / m), лише в двох поперемінних позиціях. b≈m / 3, це може бути послідовно, чергуючи 3 позиції; для b≈m / 99 проблема більше не буде в чергуванні, але для проходження одного модуля віднімання знадобиться ~ 99 кроків. ))
Аарон Тома
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.