Як я можу вручну генерувати випадкове число із заданого розподілу, як, наприклад, 10 реалізацій від стандартного нормального розподілу?
Як я можу вручну генерувати випадкове число із заданого розподілу, як, наприклад, 10 реалізацій від стандартного нормального розподілу?
Відповіді:
Якщо "вручну" включає "механічний", то у вас є багато варіантів. Щоб імітувати змінну Бернуллі з половиною ймовірності, ми можемо кинути монету: для хвостів, для голів. Для імітації геометричного розподілу ми можемо порахувати, скільки кидок монет потрібно, перш ніж ми отримаємо голови. Щоб імітувати двочленний розподіл, ми можемо кинути свою монету разів (або просто кинути монет) і порахувати голови. « У шаховому порядку» або «боб машина» або «Гальтон вікно» є більш кінетичну альтернативу - чому б не встановити один з них в дію і побачити для себе ? Здається , немає такої речі, як "зважена монета"1 n n p = 0,5 { 1 , 2 , 3 , 4 , 5 , 6 } { 1 , 2 , 3 , 4 }але якщо ми хочемо змінити параметр ймовірності нашої Бернуллі або біноміальної змінної на значення, відмінні від , голка Жорж-Луї Леклер, Конт де Буффон дозволить нам це зробити. Для імітації дискретного рівномірного розподілу на прокатуємо шестигранну штамп. Шанувальники рольових ігор зіткнуться з більш екзотичними кістками , наприклад, з тетраедричних кісток, щоб провести рівномірний вибір із , тоді як за допомогою спінера або колеса рулетки все одно можна піти далі. ( Графічне зображення )
Невже нам би довелося божеволіти, щоб генерувати випадкові числа таким чином сьогодні, коли це лише одна команда на комп'ютерній консолі - або, якщо у нас є відповідна таблиця випадкових чисел, один пробіг до найбрудніших куточків книжкової полиці? Можливо, хоча у фізичному експерименті є щось приємно тактильне. Але для людей, що працюють до епохи комп’ютера, і раніше перед широко доступними широкомасштабними таблицями випадкових чисел (з яких пізніше), моделювання випадкових змінних вручну мало більше практичного значення. Коли Буффон досліджував петербурзький парадокс- знаменита гра в монети, де сума гравця виграється вдвічі щоразу, коли кидається голова, гравець втрачає перші хвости, і очікувана їх виплата проти інтуїтивно нескінченна - йому потрібно було імітувати геометричний розподіл за допомогою . Для цього, здається, він найняв дитину, щоб кинути монету, щоб імітувати 2048 ігор петербурзької гри, записуючи, скільки кидок до закінчення гри. Цей модельований геометричний розподіл відтворений у Стиглера (1991) :
Tosses Frequency
1 1061
2 494
3 232
4 137
5 56
6 29
7 25
8 8
9 6
У тому ж есе, де він опублікував це емпіричне розслідування петербурзького парадоксу, Буффон також представив знамениту « голку Буфона ». Якщо площину розділити на смужки паралельними прямими відстань один від одного, а голка довжиною опустити на неї, ймовірність, що голка перетинає одну з ліній, є .l ≤ d 2 l
Отже, голка Буфона може використовуватися для імітації випадкової змінної або , і ми можемо регулювати ймовірність успіху, змінюючи довжину наших голок або (можливо, зручніше) відстань, на якій ми правимо лінії. Альтернативне використання голок Буфона є надзвичайно неефективним способом знайти ймовірнісне наближення для . На зображенні ( кредиті ) зображено 17 сірників, з яких 11 перетинають лінію. Коли відстань між правими лініями встановлено рівним довжині сірника, як тут, очікувана частка схрещування сірників становить і отже, ми можемо оцінитиX∼двочлен(n,2lπ2як вдвічі зворотна частка спостережуваного дробу: тут ми отримуємо . У 1901 році Маріо Лаццаріні стверджував, що провів експеримент, використовуючи 2,5 см голки з лініями на відстані 3 см, а після 3408 кидок отримав . Це добре відомий раціональний , точний до шести знаків після коми. Badger (1994) наводить переконливі докази того, що це було шахрайством , і не менш важливо, щоб бути 95% впевненим у шести десяткових знаках точності за допомогою апарату Лацаріні, потрібно терпнути терпіння 134 трильйона голок! Безумовно, голка Буфона є більш корисною як генератор випадкових чисел, ніж як метод оцінки .
Наші генератори поки що невтішно дискретні. Що робити, якщо ми хочемо імітувати нормальний розподіл? Один варіант - отримати випадкові цифри та використовувати їх для формування хороших дискретних наближень до рівномірного розподілу на , а потім виконати деякі обчислення, щоб перетворити їх у випадкові нормальні відхилення. Колесо прядильника або рулетки може дати десяткові цифри від нуля до дев'яти; кістки можуть генерувати двійкові цифри; якщо наші арифметичні навички можуть впоратися з кумеднішою базою, навіть стандартний набір кубиків зробив би. Інші відповіді більш детально висвітлювали подібний підхід на основі трансформації; Я відкладаю будь-яке подальше обговорення цього питання до кінця.
До кінця дев'ятнадцятого століття корисність нормального розподілу була добре відома, і тому були статистики, які прагнули моделювати випадкові нормальні відхилення. Потрібно сказати, що тривалі обчислення рук не були б придатними, за винятком налаштування процесу імітації в першу чергу. Як тільки це було встановлено, генерація випадкових чисел повинна бути відносно швидкою і простою. Стіглер (1991) перераховує методи, якими користуються три статистики цієї епохи. Усі досліджували методи згладжування: випадкові нормальні відхилення представляли очевидний інтерес, наприклад, для імітації похибки вимірювання, яку потрібно було згладити.
Чудовий американський статистик Ерастус Ліман Де Ліс зацікавився вирівнюванням таблиць життя і зіткнувся з проблемою, яка вимагала моделювання абсолютних значень нормальних відхилень. Що доведе, що є актуальною темою, Де Форест справді відбирав вибір із напів нормальної дистрибуції . Більше того, замість того, щоб використовувати стандартне відхилення одиниці ( ми звикли називати "стандартним"), Де Фостер захотів "ймовірної помилки" (середнього відхилення) одиниці. Така форма була наведена в таблиці "Ймовірність помилок" у додатках до "Посібника зі сферичної та практичної астрономії, том II" Вільяма Чавенета. З цієї таблиці Де Форест інтерполював квантили напів нормального розподілу від до , які він вважав "помилками однакової частоти".
Якщо ви хочете імітувати нормальний розподіл, слідуючи за De Forest, ви можете роздрукувати цю таблицю і вирізати її. Де Форест (1876) писав, що помилки "були вписані на 100 біт картонної дошки однакового розміру, які були струшені у коробці і всі витягнуті одна за одною".
Астроном і метеоролог сер Джордж Говард Дарвін (син натураліста Чарльза) поклав різне віджимання на речі, розробивши те, що він назвав "рулетою" для генерації випадкових нормальних відхилень. Дарвін (1877) описує, як:
Круглий шматок картки був закінчений радіально, так що градація, позначена була градусів, віддалених від фіксованого радіуса. Картка була обернена навколо її центру близько до фіксованого покажчика. Потім він крутився кілька разів, а при зупинці його було відчинено число навпроти індексу. [Дарвін додає у виносці: Краще зупинити диск, коли він крутиться так швидко, що градації невидимі, ніж дозволяти йому пробігатись.] Від природи закінчення отримані таким чином числа точно відбуватимуться так само, як помилки спостереження трапляються на практиці; але вони не мають ознак додавання чи віднімання з префіксом. Потім кидаючи монету знову і знову і кличучи голови і хвости , знаки або випадково присвоюються цій серії помилок.
"Покажчик" слід читати тут як "вказівник" або "індикатор" (cf "вказівний палець"). Стіглер зазначає, що Дарвін, як і Де Форест, використовував напів нормальний кумулятивний розподіл навколо диска. Згодом за допомогою монети, щоб прикріпити знак навмання, це стає цілком нормальним розподілом. Стіглер зазначає, що незрозуміло, наскільки тонко була закінчена шкала, але припускає, що інструкція вручну затримувати середину відкрутки диска полягала в тому, щоб "зменшити потенційний ухил до однієї секції диска і прискорити процедуру".
Сер Френсіс Галтон , до речі, напіврідний двоюрідний брат Чарльза Дарвіна, вже згадувався у зв'язку з його квінкунсом. Хоча це механічно імітує біноміальне розподіл, який за теоремою Де Моєра-Лапласа має разюче подібність до нормального розподілу (і час від часу використовується як навчальний посібник для цієї теми), Гальтон насправді створив набагато більш детальну схему, коли бажав зразок від звичайного розподілу. Навіть неординарніше, ніж нетрадиційні приклади у верхній частині цієї відповіді, Галтон розробив нормально розподілені кістки- або, точніше, набір кісток, які дають відмінний дискретний наближення до нормального розподілу з середнім відхиленням. Ці кістки, що датуються 1890 роком, зберігаються в колекції Галтона в Університетському коледжі Лондона.
У статті 1890 року в Nature Nature Гальтон писав, що:
Як інструмент для випадкового вибору, я не знайшов нічого кращого за кістки. Найбільш утомливо ретельно перемішувати картки між кожним наступним розіграшем, а метод перемішування та перемішування позначених куль у мішку все-таки більш стомлюючий. Вид дзиги або іншій формі рулетки краще їх, але кістки найкраще. Коли їх струшують і кидають у кошик, вони настільки різко б'ються одне проти одного і проти ребер кошикової роботи, що вони дико обертаються, і їхні позиції спочатку не дають відчутної підказки, що вони будуть після навіть одиночний хороший струс і кидання. Шанси, які дає штамп, більш різні, ніж зазвичай; Є 24 рівні можливості, а не лише 6, оскільки кожна грань має чотири ребра, які можна використовувати, як я покажу.
Галтону було важливо мати можливість швидко формувати послідовність нормальних відхилень. Після кожного рулону Галтон буде вирівнювати кістки одним дотиком, а потім записувати бали по своїх передніх краях. Спочатку він заграв би кілька кубиків типу I, на краях яких було відхилено напів нормально, подібно до карт De De, але використовуючи 24, а не 100 квантових. Для найбільших відхилень (насправді позначених як заготовки на кубиках типу I) він би розгортав стільки більш чутливих кісток типу II (які показували лише великі відхилення, при більш тонкому градації), скільки йому потрібно, щоб заповнити пробіли у своїй послідовності . Для переходу від половини нормального до нормального відхилялася, він буде котитися кубика III, який буде виділяти абознаки до його послідовності в блоках по три-чотири відхиляється за один раз. Самі кістки були червоним кольором , розміром з дюйми, і обклеєні тонким білим папером для маркування, на якому слід писати. Галтон рекомендував приготувати три кубики I типу, дві II та одну ІІІ.
Лабораторія математичних статистичних експериментів Раазеш Сайнудіна включає студентський проект з Кентерберійського університету, штат Нью- Йорк, який відтворює кістки Галтона . Проект включає емпіричне дослідження багаторазового кочення (включаючи емпіричний CDF, який виглядає заспокійливо "нормальним") та адаптацію балів для кісток, щоб вони відповідали звичайному нормальному розподілу. Використовуючи оригінальні показники Галтона, також є графік дискретного нормального розподілу, за яким насправді дотримуються результати з кістки.
Якщо ви готові розтягнути «механічне» до електричного, зауважте, що епічна RAND « Мільйон випадкових цифр зі 100 000 нормальних відхилень » базувалася на своєрідному електронному моделюванні колеса рулетки. З технічного звіту (Джордж В. Браун, спочатку червня 1949 р.) Ми знаходимо:
Таким чином, мотивація людей RAND за сприяння інженерного персоналу компанії Douglas Aircraft Company сконструювала колесо електро-рулетки на основі варіанту пропозиції, зробленої Сесілом Гастінгсом. Для цілей цієї бесіди буде достатньо короткого опису. Джерело імпульсу випадкової частоти враховується імпульсом постійної частоти, приблизно один раз в секунду, забезпечуючи в середньому близько 100 000 імпульсів за одну секунду. Схеми стандартизації імпульсів передавали імпульси на п'ятимісцевий бінарний лічильник, так що в принципі машина схожа на колесо рулетки з 32 положеннями, роблячи в середньому близько 3000 оборотів на кожному ході. Було використано двійкове перетворення в десяткову точку, відкинувши 12 з 32 позицій, а отриману випадкову цифру подавали в перфоратор IBM, отримуючи таблиці перфорованих карт випадкових цифр.
Однак, перш ніж ви також спробуєте зібрати колесо електро-рулетки, було б непогано прочитати решту доповіді! Виявилося, що схема "сильно спиралася на припущення про ідеальну стандартизацію імпульсів для подолання природних уподобань серед зустрічних позицій; пізній досвід показав, що це припущення є слабкою стороною, і значна частина пізнішого метушні з машиною стосувалася проблем, що виникають на цей пункт ". Детальний статистичний аналіз виявив деякі проблеми з результатом: наприклад,випробування частот непарних і парних цифр показали, що деякі партії мали невеликий дисбаланс. У деяких партіях це було гірше, ніж на інших, що свідчить про те, що "машина працювала в минулому місяці з моменту налаштування ... Вказівки на цій машині вимагали надмірного обслуговування, щоб підтримувати її у виглядній формі". Однак був знайдений статистичний спосіб вирішення цих питань:
На даний момент ми мали свої оригінальні мільйони цифр, 20 000 карток IBM з 50 цифрами на карту, з невеликими, але помітними непарними зміщеннями, розкритими статистичним аналізом. Тепер було прийнято рішення переупорядкувати стіл або принаймні змінити його за допомогою невеликої гри в рулетку, щоб зняти непарне зміщення. До відповідних цифр попередньої картки ми додали (моди 10) цифри кожної картки, цифри за цифрою. Отриману таблицю в один мільйон цифр потім піддавали різним стандартним тестам, частотним тестам, серійним тестам, тестам на покер тощо. Ці мільйони цифр мають чіткий стан здоров'я і були прийняті як сучасна таблиця випадкових цифр RAND.
Звичайно, були вагомі підстави вважати, що процес додавання принесе користь. Загалом, основним механізмом є обмежувальний підхід сум випадкових величин, модулюючи одиничний інтервал у прямокутному розподілі, таким же чином, як необмежені суми випадкових величин наближаються до нормальності. Цей метод використовували Гортон і Сміт з Міждержавної комісії з питань торгівлі, щоб отримати кілька хороших партій очевидно випадкових чисел з більших партій погано невипадкових чисел.
Звичайно, це стосується генерування випадкових десяткових цифр , але їх легко використовувати для отримання випадкових відхилень, відібраних на вибірці рівномірно від , округлених до скільки-небудь десяткових знаків, які ви вважаєте за потрібне взяти цифри. Існують різні прекрасні методи, щоб генерувати відхилення інших розподілів від ваших рівномірних відхилень, можливо, найестетичнішим з яких є естетичний алгоритм зиггурата для розподілу ймовірностей, який є монотонним зменшенням або одномодульним симетричним, але концептуально найпростішим і найбільш застосовним є зворотне. Трансформація CDF : задається відхилення від рівномірного розподілу на , і якщо бажаний розподіл має CDF
Список літератури
Badger, L. (1994). " Вдале наближення Лаззаріні π ". Журнал з математики . Математична асоціація Америки. 67 (2): 83–91.
Дарвін, GH (1877). " Про помилкові міри змінних кількостей та про лікування метеорологічних спостережень ". Філософський журнал , 4 (22), 1–14
De Forest, EL (1876). Інтерполяція та коригування рядів . Tuttle, Morehouse and Taylor, Нью-Хейвен, Конн.
Галтон, Ф. (1890). "Кістки для статистичних експериментів". Природа , 42 , 13-14
Стіглер, С.М. (1991). «Стохастичне моделювання в ХІХ столітті». Статистична наука , 6 (1), 89-97.
"Кожен, хто розглядає арифметичні методи отримання випадкових цифр, перебуває, звичайно, у стані гріха. Бо, як уже зазначалося декілька разів, немає такого поняття, як випадкове число - існують лише методи отримання випадкових чисел і сувора арифметична процедура звичайно не такий метод ".
Наприклад, на моїй ОС Linux я можу перевірити
$ date +%s.%N
1479733744.077762986
$ date +%s.%N
1479733980.615056616
> sqrt(-2*log(.077762986))*cos(2*pi*.615056616)
[1] -1.694815
Додаток: оскільки обчислення логарифмів і косинусів може вважатися недостатньо ручним , існує варіант Box-Мюллера, який уникає використання цих трансцендентальних функцій (див. Вправу 2.9 у нашій книзі Статистичні методи Монте-Карло ):
Тепер можна сперечатися з цією версією через Експоненціальні змінні. Але також існує дуже розумний спосіб моделювання цих змінних без виклику трансцендентальних функцій , завдяки фон Нойману, як узагальнено в цьому алгоритмі, відтвореному з неоднорідних випадкових варіантів Люка Девроя :
Справді, він вимагає обчислення 1 / е, але лише один раз.
Використання CLT для наближення нормальності, безумовно, не є методом, який я б коли-небудь радив, оскільки (1) вам все одно потрібні інші змінні для подачі середнього значення, тому, можливо, також можна використовувати уніформу в алгоритмі Box-Müller, і (2) точність зростає досить повільно з кількістю моделювання. Особливо, якщо використовувати дискретну випадкову змінну, як результат кістки, навіть з більш ніж шістьма гранями . Цитувати з Thomas et al. (2007), опитування про плюси і мінуси випадкових генераторів Гаусса:
Звичайно, центральна гранична теорема є прикладом "приблизного" методу - навіть якщо використовується досконала арифметика, для кінцевого K вихід не буде гауссовим.
Ось короткий експеримент, щоб проілюструвати проблему: я створив у 100 разів більше середнього показника на 30 випадків:
dies=apply(matrix(sample(1:6,30*100,rep=TRUE),ncol=30),1,mean)
потім нормалізували ці середні значення в середнє нульове - дисперсія змінних
stdies=(dies-3.5)/sqrt(35/12/30)
і подивився на нормальне пристосування [або його відсутність] цього зразка:
dies
76/30
122/30
dies=matrix(apply(matrix(sample(0:5,15*200,rep=TRUE),nrow=15)/6^(1:15),2,sum),ncol=2)
norma=sqrt(-2*log(dies[,1]))*c(cos(2*pi*dies[,2]),sin(2*pi*dies[,2]))
підгонка так добре , як можна було б очікувати для нормальної вибірки розміру 200 (тільки сюжет інший для істинного нормального зразка norma=rnorm(100)
):
як далі показано тестом Колмогорова-Смірнова:
> ks.test(norma,pnorm)
One-sample Kolmogorov-Smirnov test
data: norma
D = 0.06439, p-value = 0.3783
alternative hypothesis: two-sided
Це не зовсім випадково, але воно повинно бути досить близьким, оскільки, здається, ви хочете грубий експеримент.
Використовуйте свій телефон, щоб налаштувати хронометр. Через добрі 10 секунд припиніть це (Чим більше ви чекаєте, тим більше підходите до справді "випадкового" результату, але 10 секунд - це добре). Візьміть останні цифри (наприклад, 10,67 сек дасть вам 67). Застосуйте таблицю відсотків для нормального розподілу. У цьому прикладі потрібно просто шукати 0,67, і ви знайдете число. У цьому випадку ваше значення становить приблизно 0,45. Це не зовсім точно, але це дасть вам ґрунтовну оцінку.
Якщо ви котитеся нижче 50, просто зробіть 100- [Your Result] і скористайтеся таблицею. Ваш результат буде однаковим, зі знаком мінус, завдяки симетрії N (0,1).
Варто зазначити, що як тільки ви можете генерувати рівномірну (0,1), ви можете створити будь-яку випадкову змінну, для якої обернена cdf може бути обчислена, просто включивши єдину випадкову змінну у зворотну CDF.
То як же можна обчислити рівномірність (0,1) вручну? Ну, як згадував @Silverfish, є різноманітні кістки, які використовуються традиційними гравцями RPG. Один з яких - десятибічний штамб. Якщо припустити, що це справедлива смерть, то тепер ми можемо створити дискретну форму (0, 9).
Таким чином, ми можемо дуже наблизитись до суцільної рівномірної форми (0,1), наблизивши її до тонкомережевого дискретного рівномірного розподілу з кількома 10-ти сторонніми кубиками. Потім це може бути підключено до зворотного CDF для отримання випадкової величини, що цікавить.