Що таке насправді випадковість


23

Я студент з інформатики, і наразі навчаюся на курсі моделювання систем та моделювання. Він передбачає спілкування із повсякденними системами навколо нас та моделювання їх у різних сценаріях, генеруючи випадкові числа в різних кривих розподілу, наприклад, IID, Гаусса тощо. Я працював над проектом boids, і питання мене просто вразило, що саме таке "випадкове" насправді? Я маю на увазі, наприклад, кожне випадкове число, яке ми генеруємо, навіть у наших мовах програмування, як за допомогою Math.random()методу на Java, по суті генерується за «алгоритмом».

Як ми насправді знаємо, що послідовність чисел, яку ми виробляємо, насправді є випадковою, і чи допоможе вона нам моделювати певну модель якомога точніше?



Відповіді:


18

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

Ось інтуїтивно зрозумілий приклад, який насправді відвертав людей у ​​той день. Розглянемо послідовність кидок монети. Результат одного кидання - це голови ( ) або хвости ( Т ). Скажімо, ми робимо два експерименти, коли 10 разів кидаємо монету. Перший експеримент E 1 дає нам Н , Н , Н , Н , Н , Н , Н , Н , Н , Н . Другий експеримент E 2 дає нам T , T , H , T , H ,НТЕ1Н,Н,Н,Н,Н,Н,Н,Н,Н,НЕ2 . Побачивши результат, ви можете спокусити стверджувати, що з монетою в E 1 щось не так, або хоча б з якоїсь дивної причини те, що ви отримали, не є випадковим. Але якщо припуститияк H і T є ймовірним (монета є справедливим), ймовірність отримання або Е 1 або Е 2 одно ( 1 / 2 ) 10 . Фактично, отриманнябудь-якоїконкретної послідовності настільки ж ймовірне, як і будь-яке! Все-таки E 2 відчуваєТ,Т,Н,Т,Н,Т,Т,Н,Т,НЕ1НТЕ1Е2(1/2)10Е2 випадково, а - ні.Е1

Взагалі, оскільки складність Колмогорова не обчислюється, не можна обчислити, наскільки випадково сказати послідовність чисел, незалежно від того, який тип заявленого «абсолютно випадкового» процесу породив її.


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

1
@dkuper Зауважте, що нескінченна послідовність, у якої початкові сегменти, всі випадкові згідно з визначенням складності Колмогорова, буде нормальною, але нормальна недостатня для того, щоб вважати справді випадковою. Наприклад, є звичайні числа, усі початкові сегменти яких мають більше 1, ніж 0.
Квінн Калвер

@Quinn Culver Так, я згоден, нормальність була лише прикладом додаткового інструменту, який ми маємо (серед інших) для нескінченних послідовностей. Колмогорова складність та інші досі корисні.
Денис

8

У випадку з Java (або подібними мовами) ми знаємо алгоритм, який використовується для створення випадкових чисел. Якщо вона починається з одного насіння, числа не є випадковими взагалі, тобто , якщо ми знаємо , в послідовності 0 , ... , п , ми знаємо , в I + 1 , або формулюється умовної ймовірності: K , л , i : P ( a i + 1 = k a i = l ) { 0 ,аiа0,,анаi+1

к,л,i:П(аi+1=каi=л){0,1}

Тим не менш, ці серії можуть відповідати властивостям (див., Наприклад, WP: Автокореляція ), які виконують випадкові числа, і цих властивостей часто вистачає для виконання завдань, де ми хотіли б використовувати "справжні" (наприклад, породжені деяким фізичним процесом) випадкові числа, але можуть " t зусиль їх.


3

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

Якщо ви могли б генерувати нескінченно довгу послідовність, використовуючи свій випадковий генератор, він повинен мати ті ж параметри, що і випадковий розподіл. Наприклад, якщо ви використовуєте стандартний розподіл Гаусса , то ваша послідовність повинна наближатися до середнього значення 0 та до стандартного відхилення 1 . Отже, один попередній спосіб перевірити ваш генератор - це створити дійсно довгу послідовність і перевірити, чи він наближається до потрібного випадкового розподілу.(мк=0,σ=1)1

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


3

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

АА

  • всі машини Тьюрінга, які завжди зупиняються
  • всі сімейства схем поліноміальних розмірів
  • всі поліномічні машини Тьюрінга
  • всі машини журналу Тюрінга

А(Хн)Хн{0,1}нϵААА

|Пр[А(Хн)=1]-Пр[А(Uн)=1]|ϵ,
Uн{0,1}н

Ця ідея стоїть за будь-яким сучасним формальним поняттям псевдовипадковості.


2

Ось ще два центи.

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

Але замість цього може бути корисним розглядати їх як детерміновані алгоритми, які беруть два входи: "справжній" вхід та деякі "випадкові" входи, які ми отримуємо від таких функцій Math.Random().

[0,1]нжурналн

[0,1]нжурналн

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


-2

Ми не можемо генерувати справді випадкові числа. Існують різні методи генерації псевдовипадкових чисел з використанням заданого рівняння та певного значення насіння. Тож випадкова послідовність чисел залежить від значення насіння. Як тільки ми дізнаємося про значення насіння, ми можемо передбачити, якою буде послідовність. Крім цього, існують і інші методи генерації випадкових чисел. Люди в даний час використовують кілька методів для генерації випадкових чисел , наприклад , використовуючи час диска руху голови і інші фізичні методи , які можуть бути включені в комп'ютері Див: http://en.wikipedia.org/wiki/Random_number_generation#Generation_methods



-3

за вказаним методом, як ви сказали
Math.random () в Java
Randomize; Випадкові (n); в Дельфах

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

Спасибі.


2
Як це дає відповідь на питання, яке "як можна знати, що послідовність є випадковою"?
Juho

як я вже говорив. просто ... де "випадковий" можна розглядати як накрутку, але це не впливає на його випадковий ефект. тоді пишайтеся і будуйте свою логіку. Простий.
Псевдонім

-4

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

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

  • інші числа, згенеровані в комп'ютерній царині, - це те, що відомо як "псевдовипадковість", яке моделюється і ніколи не може відповідати "справжній випадковості". це так звані PRNG

  • є важливе відчуття "криптографічної твердості генераторів випадкових чисел", яке в певному сенсі вимірює їх "якість" або "безпеку", наприклад, криптографічно захищений PRNG . в основному "слабкий" генератор не має стільки обчислювальної складності, скільки "жорсткий" генератор, а "слабкий" - легше зламати.

  • О(н)О(н2)=?Доказ NP повинен мати певну "складність", інакше та сама методика аналізу може бути використана для розбиття PRNG, і, крім того, дещо дивно, більшість або, можливо, всі розділення / методи класу складності, відомі на той момент (або, можливо, навіть згодом, на сьогоднішній день ) не мають достатньої складності.

  • Важливою темою дослідження в TCS є рандомізовані та дерадонімізовані алгоритми . ідея полягає приблизно в тому, щоб вивчити, наскільки алгоритм змінено, замінивши "справжню випадковість" PRNG, і існують різні глибокі теореми з цього приводу. ось запитання cstheory.se з високою оцінкою, яке дає певний колорит досліджень у цій галузі: ефективні та прості рандомізовані алгоритми, де детермінізм утруднений

  • Ще одна ключова тема TCS - це інформаційна ентропія - спочатку впроваджена у фізику давно - яка вивчає тісно пов'язане поняття "інформаційний порядок" та, як деякі інші важливі поняття в (T) CS, здається, є однією з ключових ідей, які перетинають межа між прикладним та теоретичним аналізом, навіть деякі формули однакові .

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


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

погодився, також у фізиці це ключове поняття при винаході КМ та дебатах Бор-Ейнштейна , Беллс тмм , і все ще мотивує "приховані теорії змінних" знову активну область досліджень. так що, як ви кажете, можливо, ніхто не знає, що це таке, але багато хто все ще працює над тим, щоб знайти більш остаточну відповідь, як ми говоримо.
vzn

докладніше про відповідність випадковості для кута P проти NP, це виявляється у задоволеності та кліці "точки переходу", наприклад, як у цій статті Монотонна складність k-Clique на випадкових графіках Россмана
vzn


огляд про випадковість у CS від wigderson RANDOMNESS AND
PSEUDORANDOMNESS
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.