Domanda

Qualche tipo ha detto quanto segue:

Chiunque tenta di generare numeri casuali con mezzi deterministici è, ovviamente, vivere in uno stato di peccato.

Ciò è sempre necessario per significare che non puoi generare veri numeri casuali con un solo computer. E ha detto che quando i computer erano le dimensioni equivalenti di un singolo microprocessore Intel 8080 (~ 6000 valvole). I computer sono diventati più complessi e credo che la dichiarazione di von von Neumann potrebbe non essere più vera. Considera che un software implementato solo algoritmo è impossibile. Funzionano su hardware fisico. Veri generatori di numeri casuali e le loro fonti entropiate sono anche realizzati in hardware.

Questo frammento di Java ha messo in giro:

      file.writeByte((byte) (System.nanoTime() & 0xff));

può creare un file di dati che ho rappresentato come immagine:

nanoimage

Puoi vedere la struttura, ma anche con molta casualità. La cosa di interesse è che questo file PNG è di dimensioni 232kb, ma contiene 250.000 pixel in scala di grigi. Il livello di compressione PNG era massimo. Questo è solo un rapporto di compressione del 7%, cioè. abbastanza non comprimibile. Ciò che è anche interessante è che il file è unico. Ogni generazione di questo file è un modello leggermente diverso e ha una compressibilità ~ 7% simile. Lo metto in evidenza in quanto è fondamentale per la mia argomentazione. Questo è ~ 7Bits/byte entropia. Ciò ridurrà ovviamente all'uso di un algoritmo di compressione più forte. Ma non ridurre a nulla vicino a 0 bit/byte. Si può avere un'impressione migliore prendendo l'immagine sopra e sostituendo la sua mappa a colori per una casuale:-

randomised nanoimage

La maggior parte della struttura (nella metà superiore) scompare in quanto erano solo sequenze di valori simili ma marginalmente diversi. È una vera fonte entropia creata semplicemente eseguendo un programma Java su un sistema operativo multi -prendimento? Non un generatore di numeri casuali uniformemente distribuito, ma la sorgente entropica per uno? Una fonte di entropia creata di software in esecuzione su hardware fisico che sembra essere un PC.

Supplementare

Al fine di confermare che ogni immagine genera entropia fresca senza un modello fisso comune a tutti, sono state generate 10 immagini consecutive. Questi sono stati quindi concatenati e compressi con l'archiver più forte che riesco a compilare (PAQ8PX). Questo processo eliminerà tutti i dati comuni, inclusa la correlazione automatica che lascia solo le modifiche /entropia.

Il file concatenato compresso a ~ 66%, che porta a una velocità di entropia di ~ 5,3 bit /byte o 10,5 Mbit /immagine. Una quantità sorprendente di entropia $ smile $

Supplementare 2

Ci sono stati commenti negativi che la mia entropia mediante metodologia di test di compressione è imperfetta, dando solo una stima del limite superiore sciolta. Quindi ora ho eseguito il file concatenato attraverso il test ufficiale di valutazione dell'entropia crittografica del NIST, SP800-90B_ENTROPASSESSEMENTO. Questo è buono quanto ottiene per la misurazione dell'entropia non IID. Questo è il rapporto (scusate questa domanda sta diventando molto tempo, ma il problema è complesso):-

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

Il risultato è che NIST crede di aver generato 5,6 bit/byte di entropia. La mia stima di compressione fai -da -te lo mette a 5,3 bit/byte, marginalmente più conservatore.

-> Le prove sembrano supportare l'idea che un computer che esegue software può generare entropia reale. E quel von Neumann aveva torto (ma forse corretto per il suo tempo).


Offro i seguenti riferimenti che potrebbero supportare la mia richiesta:-

Esistono modelli stocastici di non determinismo nel tasso di esecuzione del programma?

Analisi WCET di sistemi probabilistici in tempo reale

Esiste un algoritmo software che può generare un modello di caos non deterministico? e la rilevanza degli effetti caotici.

Parallelismi con il Principio di incertezza entropica quantistica

Aleksey Shipilёv's Voci di blog Per quanto riguarda il comportamento caotico di nanotime (). La sua trama a dispersione non è dissimile dalla mia.

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a cs.stackexchange
scroll top