Деякий хлопець сказав наступне:
Кожен, хто намагається генерувати випадкові числа детермінованими засобами, звичайно, живе в стані гріха.
Це завжди означає, що ви не можете генерувати справжні випадкові числа лише за допомогою комп'ютера. І він сказав, що коли комп'ютери були еквівалентними розмірами одного мікропроцесора Intel 8080 (~ 6000 клапанів). Комп'ютери стали складнішими, і я вважаю, що вислів фон Фон Ноймана вже не може бути правдивим. Вважайте, що реалізований лише алгоритм програмного забезпечення неможливий. Вони працюють на фізичному обладнанні. Генератори справжніх випадкових чисел та їхні джерела ентропії також виготовлені з обладнання.
Цей фрагмент Java поміщено у цикл:
file.writeByte((byte) (System.nanoTime() & 0xff));
я можу створити файл даних, який я представляв як зображення:
Ви можете бачити структуру, але також з великою кількістю випадковості. Цікавить, що цей файл PNG має розмір 232 КБ, але містить 250 000 пікселів сірого масштабу. Рівень стиснення PNG був максимальним. Це лише коефіцієнт стиснення 7%, тобто. досить не стисливий Що також цікаво, це те, що файл унікальний. Кожне покоління цього файлу має дещо інший малюнок і має схожу ~ 7% стисливість. Я підкреслюю це як важливе для мого аргументу. Це ентропія ~ 7 біт / байт. Це зменшиться, звичайно, при використанні більш сильного алгоритму стиснення. Але не зводити до нічого, що становить близько 0 біт / байт. Краще враження можна справити, взявши наведене вище зображення і замінивши його кольорову карту на випадкову: -
Більша частина структури (у верхній половині) зникає, оскільки це були лише послідовності подібних, але незначно різних значень. Це справжнє джерело ентропії, створене просто виконанням програми Java в операційній системі, що приймає декілька? Не рівномірно розподілений генератор випадкових чисел, але джерело ентропії для одного? Джерело ентропії, побудований із програмного забезпечення, що працює на фізичному обладнанні, яке просто відбувається на ПК.
Доповнення
Для того, щоб підтвердити, що кожне зображення генерує свіжу ентропію без фіксованого шаблону, загального для всіх, було створено 10 послідовних зображень. Потім вони були об'єднані та стиснені найсильнішим архіватором, який я можу отримати для компіляції (paq8px). Цей процес дозволить усунути всі поширені дані, включаючи автоматичну кореляцію, залишивши лише зміни / ентропію.
Зв'язаний файл стискається до ~ 66%, що призводить до швидкості ентропії ~ 5,3 біт / байт або 10,5 Мбіт / зображення. Дивовижна кількість ентропії
Додатковий 2
Були негативні зауваження, що моя ентропія методологією тесту на стиск є хибною, лише даючи вільну оцінку верхньої межі. Тепер я запускаю зв'язаний файл, хоча офіційний тест оцінки криптографічної ентропії NIST - SP800-90B_EntropyAssessment . Це настільки ж добре, як і для вимірювання ентропії без IID. Це звіт (вибачте, це питання стає тривалим, але питання складне): -
Running non-IID tests...
Entropic statistic estimates:
Most Common Value Estimate = 7.88411
Collision Test Estimate = 6.44961
Markov Test Estimate = 5.61735
Compression Test Estimate = 6.65691
t-Tuple Test Estimate = 7.40114
Longest Reapeated Substring Test Estimate = 8.00305
Predictor estimates:
Multi Most Common in Window (MultiMCW) Test: 100% complete
Correct: 3816
P_avg (global): 0.00397508
P_run (local): 0.00216675
Multi Most Common in Window (Multi MCW) Test = 7.9748
Lag
Test: 100% complete
Correct: 3974
P_avg (global): 0.00413607
P_run (local): 0.00216675
Lag Prediction Test = 7.91752
MultiMMC Test: 100% complete
Correct: 3913
P_avg (global): 0.00407383
P_run (local): 0.00216675
Multi Markov Model with Counting (MultiMMC) Prediction Test = 7.9394
LZ78Y Test: 99% complete
Correct: 3866
P_avg (global): 0.00402593
P_run (local): 0.00216675
LZ78Y Prediction Test = 7.95646
Min Entropy: 5.61735
У результаті NIST вважає, що я створив 5,6 біт / байт ентропії. Моя оцінка стиснення DIY ставить це в 5,3 біт / байт, дещо консервативніше.
-> Докази, схоже, підтверджують думку про те, що комп'ютер, що тільки працює з програмним забезпеченням, може генерувати реальну ентропію. І той фон Нойман помилявся (але, можливо, правильний для свого часу).
Я пропоную наступні посилання, які можуть підтвердити мою претензію: -
Чи існують якісь стохастичні моделі недетермінізму в швидкості виконання програми?
WCET Аналіз ймовірнісних жорстких систем реального часу
Чи існує алгоритм програмного забезпечення, який може генерувати недетерміновану модель хаосу? та актуальність хаотичних ефектів.
Паралелі з принципом квантової ентропічної невизначеності
Запис у блозі Олексія Шипільова щодо хаотичної поведінки nanoTime (). Його сюжет розсіювання не відрізняється від мого.
System.nanoTime()
.