Perché la generazione di 8 bit casuali è uniforme su (0, 255)?


35

Sto generando 8 bit casuali (o 0 o 1) e li concateno insieme per formare un numero di 8 bit. Una semplice simulazione Python produce una distribuzione uniforme sul set discreto [0, 255].

Sto cercando di giustificare il motivo per cui questo ha senso nella mia testa. Se confrontassi questo con il lancio di 8 monete, il valore atteso non sarebbe da qualche parte intorno a 4 teste / 4 code? Quindi per me ha senso che i miei risultati debbano riflettere un picco nel mezzo dell'intervallo. In altre parole, perché una sequenza di 8 zero o 8 uno sembra avere la stessa probabilità di una sequenza di 4 e 4, oppure 5 e 3, ecc.? Cosa mi sto perdendo qui?


17
Il valore atteso della distribuzione di bit in modo casuale nell'intervallo [0,255] è anche da qualche parte intorno a 4 1/4 0.
user253751

2
Solo perché si assegna un peso uguale a ciascun numero da 0 a 255, non significa che il risultato della funzione "differenza tra il conteggio di 1 e 0" si verificherà anche una volta e una sola volta. Potrei dare lo stesso peso a tutte le persone della mia organizzazione. Non significa che le loro età sarebbero ugualmente ponderate. Alcune età potrebbero essere molto più comuni di altre. Ma una persona non è più comune di qualsiasi altra persona.
Brad Thomas,

2
Pensala in questo modo ... Il tuo primo bit casuale determinerà il valore del bit 7, un 1 vale 128 e uno 0 vale 0. Su 256 numeri hai una probabilità del 50% che il numero sia 0-127 se il bit è 0 e 128-255 se il bit è 1. Supponiamo che sia 0, quindi il bit successivo determina se il risultato sarà 0-63 o 64-127. Tutti gli 8 bit sono necessari per formare uno dei 256 risultati ugualmente probabili. Stai pensando di aggiungere totali come faresti con i dadi. Le probabilità di ottenere 4 1 e 4 0 sono maggiori di quelle di 8 1, ma ci sono più modi in cui possono essere organizzati per darti un risultato diverso.
Jason Goemaat, il

2
Supponiamo di tirare un dado a 256 facce etichettato con i numeri da 0 a 255. Ti aspetteresti una distribuzione uniforme. Supponiamo ora di rietichettare il dado in modo che un lato dica 0, 8 lati dicono 1, 28 lati dicono 2, e così via; ogni lato è ora etichettato con il numero di bit on nel numero che era su quel lato. Lancia di nuovo il dado; perché ti aspetti di ottenere una distribuzione uniforme dei numeri da 0 a 8?
Eric Lippert,

Se la distribuzione funzionasse in questo modo, allora potrei fare un sacco di soldi scommettendo sulla roulette solo dopo 7 rossi di fila. 7 e 1 sono 8 volte più probabili di 8 e 0! (ignorando gli 0, ma questo disallineamento supera di gran lunga lo 0, e l'inclinazione 00)
Cruncher

Risposte:


61

TL; DR: Il netto contrasto tra i pezzi e le monete è che nel caso delle monete, stai ignorando l' ordine dei risultati. HHHHTTTT è trattato come il TTTTHHHH (entrambi hanno 4 teste e 4 code). Ma in bit ti preoccupi dell'ordine (perché devi ottenere "pesi" per le posizioni dei bit per ottenere 256 risultati), quindi 11110000 è diverso da 00001111.


Spiegazione più lunga: questi concetti possono essere unificati in modo più preciso se siamo un po 'più formali nella definizione del problema. Considera un esperimento come una sequenza di otto prove con esiti dicotomici e probabilità di un "successo" 0,5 e un "fallimento" 0,5 e le prove sono indipendenti. In generale, chiamerò questo successi, n prove totali e n - k fallimenti e la probabilità di successo è p .knnkp

  • Nell'esempio della moneta, il risultato " teste, n - k code" ignora l'ordinamento delle prove (4 teste è 4 teste indipendentemente dall'ordine in cui si verificano) e questo dà origine alla tua osservazione che 4 teste hanno più probabilità di 0 o 8 teste. Quattro teste sono più comuni perché ci sono molti modi per creare quattro teste (TTHHTTHH, o HHTTHHTT, ecc.) Rispetto a un altro numero (8 teste hanno solo una sequenza). Il teorema binomiale fornisce il numero di modi per effettuare queste diverse configurazioni.knk

  • Al contrario, l'ordine è importante per i bit poiché a ogni posizione è associato un "peso" o un "valore di posizione". Una proprietà del coefficiente binomiale è che , cioè se contiamo tutte le diverse sequenze ordinate, otteniamo28=256. Questo collega direttamente l'idea di quanti modi diversi ci sono per renderekhead innprove binomiali al numero di diverse sequenze di byte.2n=k=0n(nk)28=256kn

  • Inoltre, possiamo dimostrare che i 256 risultati sono ugualmente probabili dalla proprietà dell'indipendenza. Le prove precedenti non hanno alcuna influenza sulla prova successiva, quindi la probabilità di un particolare ordinamento è, in generale, (poiché la probabilità congiunta di eventi indipendenti è il prodotto delle loro probabilità). Poiché le prove sono corrette, P ( esito positivo ) = P ( esito negativo ) = p = 0,5 , questa espressione si riduce a P ( qualsiasi ordinamento ) = 0,5 8 =pk(1p)nkP(success)=P(fail)=p=0.5 . Poiché tutti gli ordini hanno la stessa probabilità, abbiamo una distribuzione uniforme su questi risultati (che mediante la codifica binaria può essere rappresentata come numeri interi in[0,255]).P(any ordering)=0.58=1256[0,255]

  • Infine, possiamo riportare questo cerchio completo al lancio della moneta e alla distribuzione binomiale. Sappiamo che l'occorrenza di 0 teste non ha la stessa probabilità di 4 teste, e ciò è dovuto al fatto che esistono diversi modi per ordinare le occorrenze di 4 teste e che il numero di tali ordinamenti è dato dal teorema binomiale. Quindi deve essere ponderato in qualche modo, in particolare deve essere ponderato dal coefficiente binomiale. Quindi questo ci dà il PMF della distribuzione binomiale, P ( k  successes ) = ( nP(4 heads). Potrebbe essere sorprendente che questa espressione sia un PMF, in particolare perché non è immediatamente ovvio che si somma a 1. Per verificare, dobbiamo verificare che n k = 0 ( nP(k successes)=(nk)pk(1p)nk, tuttavia questo è solo un problema di coefficienti binomiali:1=1n=(p+1-p)n= n k = 0 ( nk=0n(nk)pk(1p)nk=1.1=1n=(p+1-p)n=ΣK=0n(nK)pK(1-p)n-K


Questo ha senso ... ma non dovremmo aspettarci che 15, 30, 60, 120 e 240 abbiano un peso maggiore nella distribuzione di 0 o 255?
vetroso

1
Penso di capirlo ora. Accetterò questa risposta perché penso che la chiave qui sia l'ordine, al quale hai richiamato l'attenzione. Grazie
vetroso

Ancora una nota: per usare il mio esempio di moneta, si tratta di lanciare 8 monete contemporaneamente anziché 8 prove di lancio di una moneta. Qui stava la mia confusione.
vetroso

2
Il concetto di "valore del luogo" da "aritmetica di livello elementare" è particolarmente applicabile qui; usare un'analogia decimale, si considera 10001000e 10000001ad essere numeri molto diverse.
JM non è uno statistico il

17

perché una sequenza di 8 zero o 8 uno sembra avere la stessa probabilità di una sequenza di 4 e 4, oppure 5 e 3, ecc.

Il paradosso apparente può essere riassunto in due proposizioni, che potrebbero sembrare contraddittorie:

  1. La sequenza (otto zero) è ugualmente probabile come la sequenza s 2 : 01010101 (quattro zero, quattro uno). (In generale: tutte le 2 8 sequenze hanno la stessa probabilità, indipendentemente da quanti zero / quelli hanno.)s1:00000000s2:0101010128

  2. L'evento " : la sequenza aveva quattro zero " è più probabile (anzi, 70 volte più probabile) dell'evento " e 2 : la sequenza aveva otto zero ".e170e2

Queste proposizioni sono entrambe vere. Perché l'evento include molte sequenze.e1


8

Tutte le sequenze hanno la stessa probabilità 1/2 8 = 1/256. È sbagliato pensare che le sequenze che si avvicinano a un numero uguale di 0 e 1 sono più probabili quando la domanda viene interpretata. Dovrebbe essere chiaro che arriviamo a 1/256 perché assumiamo l' indipendenza da prova a prova . Ecco perché moltiplichiamo le probabilità e il risultato di una sperimentazione non ha alcuna influenza sulla successiva.2828


2
Questa sarebbe una risposta ok, anche se breve, se la domanda non includesse la parola "perché". Così com'è, semplicemente ribadisci uno dei dati della domanda, senza dare alcuna spiegazione.
Tin Man,

1
In realtà ... Questa risposta è in realtà errata, vedi la risposta di leonbloy per il perché.
Tin Man,

3
@Walt non è errato. Sottigliezza del linguaggio. Una determinata sequenza non è più probabile perché presenta meno squilibri tra 0 e 1 secondi. Esistono semplicemente più sequenze di questo tipo .
Hobbs

4
Qualcuno è d'accordo con me? Se un 0 ha probabilità 1/2 e 1 ha probabilità 1/2 e uno nella sequenza è indipendente dalla successiva la probabilità di una data sequenza di lunghezza 8 ha probabilità . e così fa qualsiasi altra sequenza di 8.1/28=1/256
Michael R. Chernick il

4
@Michael Sono pienamente d'accordo e sono felice di vedere - finalmente! - un esplicito appello al cuore della questione: l' indipendenza. Sarei felice di votare la tua risposta se includessi quel commento in essa.
whuber

7

ESEMPIO con 3 bit (spesso un esempio è più illustrativo)

Scriverò i numeri naturali da 0 a 7 come:

  • Un numero nella base 10
  • Un numero nella base 2 (ovvero una sequenza di bit)
  • Una serie di lanci impliciti nella rappresentazione di base 2 (1 indica un lancio di teste e 0 indica un lancio di code).

Base 10Base 2 (with 3 bits)Implied Coin Flip SeriesHeadsTails0000TTT031001TTH122010THT123011THH214100HTT125101HTH216110HHT217111HHH30

Scegliere un numero naturale da 0 a 7 con uguale probabilità equivale a scegliere una delle serie di gettoniera a destra con uguale probabilità.

Quindi, se si sceglie un numero dalla distribuzione uniforme su numeri interi 0-7, si ottiene un possibilità di scegliere 3 teste,318 possibilità di scegliere 2 teste,338 possibilità di scegliere 1 testa e138 possibilità di scegliere 0 teste.18


3

La risposta di Sycorax è corretta, ma sembra che tu non sia del tutto chiaro sul perché. Quando lanci 8 monete o generi 8 bit casuali tenendo conto dell'ordine, il risultato sarà una delle 256 possibilità ugualmente probabili. Nel tuo caso, ciascuno di questi 256 possibili risultati viene mappato in modo univoco su un numero intero, in modo da ottenere una distribuzione uniforme come risultato.

Se non prendi in considerazione l'ordine, ad esempio considerando quante teste o code hai ottenuto, ci sono solo 9 possibili risultati (0 teste / 8 code - 8 teste / 0 code) e non sono più ugualmente probabili . La ragione di ciò è perché tra i 256 possibili risultati, ci sono 1 combinazione di lanci che ti dà 8 teste / 0 code (HHHHHHHH) e 8 combinazioni che danno 7 teste / 1 code (una croce in ciascuna delle 8 posizioni in l'ordine), ma 8C4 = 70 modi per avere 4 teste e 4 code. Nel caso del lancio della moneta, ciascuna di queste 70 combinazioni viene mappata su 4 teste / 4 code, ma nel problema del numero binario ognuna di quelle 70 uscite viene mappata su un numero intero univoco.


2

Il problema, ribadito, è: perché il numero di combinazioni di 8 cifre binarie casuali prese da 0 a 8 cifre selezionate (ad esempio, le 1) in un momento diverso dal numero di permutazioni di 8 cifre binarie casuali. Nel contesto qui, la scelta casuale di 0 e 1 significa che ogni cifra è indipendente da qualsiasi altra, quindi le cifre sono non correlate e ; .p(0)=p(1)=12

La risposta è: ci sono due diverse codifiche; 1) codifica senza perdita di permutazioni e 2) codifica con perdita di combinazioni.

i=182i1XiXiith28=256. Quindi, per coincidenza, si possono tradurre quelle cifre binarie nei numeri di base 10 da 0 a 255 senza perdita di unicità, oppure si può riscrivere quel numero usando qualsiasi altra codifica senza perdita (es. Dati compressi senza perdita, esadecimale, ottale). La domanda in sé, tuttavia, è binaria. Ogni permutazione è quindi altrettanto probabile perché esiste quindi un solo modo in cui è possibile creare ciascuna sequenza di codifica univoca e abbiamo ipotizzato che l'apparizione di 1 o 0 sia ugualmente probabile in qualsiasi punto all'interno di quella stringa, in modo tale che ogni permutazione sia ugualmente probabile.

i=1820XiC(8,i=18Xi)i=18XiC(8,4)

Nota: al momento attuale, la risposta sopra è l'unica contenente un confronto computazionale esplicito delle due codifiche e l'unica risposta che menziona anche il concetto di codifica. Ci è voluto un po 'per farlo bene, motivo per cui questa risposta è stata sottoposta a downgrade, storicamente. Se ci sono reclami in sospeso, lascia un commento.

Aggiornamento: dall'ultimo aggiornamento, sono contento di vedere che il concetto di codifica ha iniziato a prendere piede nelle altre risposte. Per mostrarlo esplicitamente al problema attuale, ho allegato il numero di permutazioni che sono codificate con perdita di dati in ciascuna combinazione.inserisci qui la descrizione dell'immagine

C(8,n)1n0692569=247


2
Using the conventional way to name numbers--by omitting all reference to preceding zeros--potentially confuses this explanation. Don't you think the situation would become much clearer by writing 0 as 00000000, 1(che hai inavvertitamente omesso) come 00000001e così via?
whuber

16
Frankly this is all correct as far as it goes but it doesn't address the question. You've done a fine job of showing how eight ordered bits can represent numbers in the range, but haven't explained why selecting those bits at random give a uniform distribution (something which is, admittedly, so simple that explaining it clearly takes some subtlety).
dmckee

9
Non sarebbe più semplice affermare che 8 bit casuali (indipendentemente) sono distribuiti uniformemente su [00000000, 11111111] per lo stesso motivo per cui 3 cifre casuali sono distribuiti uniformemente su [000, 999]? L'aspetto collaterale di come / perché i computer usano il binario e le basi frazionarie è totalmente inutile e non correlato. Voglio dire, il fatto che il binario usi solo i simboli 0 e 1 è solo una proprietà intrinseca della base 2 ... non c'è bisogno di spiegarlo. Se volessi mantenere quel tipo di spiegazione lì dentro, sarebbe probabilmente più utile spiegare come funzionano le basi in generale, ma sarebbe comunque fuori punto.
Blackhawk

3
I am glad to see how much this answer has improved. However, I have difficulty seeing what base-10 representations have to do with this question (wouldn't base-3 or base-17 work just as well?) and I cannot see what might be special about 8 bits that doesn't also generalize to any finite number of bits. That suggests that most of the considerations in this answer are tangential or irrelevant.
whuber

3
E desidero ringraziarvi per la felice caratterizzazione della confusione espressa nella domanda: codifica "lossy" e "lossless". È memorabile, leggermente diverso dalle altre prospettive, perspicace e potenzialmente potrebbe chiarire rapidamente quella confusione.
whuber

1

Vorrei ampliare un po 'l'idea di dipendenza dall'ordine e indipendenza.

Nel problema del calcolo del numero atteso di teste dal lancio di 8 monete, stiamo sommando i valori di 8 distribuzioni identiche, ognuna delle quali è la distribuzione di Bernoulli [; B(1, 0.5) ;](in altre parole, una probabilità del 50% di 0, una probabilità del 50% di 1). La distribuzione della somma è la distribuzione binomiale [; B(8, 0.5) ;], che ha la forma familiare di gobba con la maggior parte della probabilità centrata attorno a 4.

Nel problema del calcolo del valore atteso di un byte composto da 8 bit casuali, ogni bit ha un valore diverso che contribuisce al byte, quindi stiamo sommando i valori di 8 diverse distribuzioni. Il primo è [; B(1, 0.5) ;], il secondo è [; 2 B(1, 0.5) ;], il terzo è [; 4 B(1, 0.5) ;], quindi fino all'ottavo che è [; 128 B(1, 0.5) ;]. La distribuzione di questa somma è comprensibilmente abbastanza diversa dalla prima.

Se volessi dimostrare che quest'ultima distribuzione è uniforme, penso che potresti farlo induttivamente - la distribuzione del bit più basso è uniforme con un intervallo di 1 per ipotesi, quindi vorrai dimostrare che se la distribuzione dei [; n ;]bit più bassi è uniforme con un intervallo di [; 2^n - 1} ;]allora l'aggiunta del [; n+1 ;]bit st rende uniforme la distribuzione dei [; n + 1 ;]bit più bassi con un intervallo di [; 2^{n+1} - 1 ;], ottenendo una prova per tutti positivi[; n ;]. Ma il modo intuitivo è probabilmente l'esatto contrario. Se si inizia dal bit alto e si scelgono i valori uno alla volta fino al bit basso, ogni bit divide lo spazio dei possibili risultati esattamente a metà e ogni metà viene scelta con uguale probabilità, quindi al momento in cui si arriva al in fondo, ogni singolo valore deve avere avuto la stessa probabilità di essere scelto.


Non è un'uniforme continua. Il bit è 0 o 1 e non c'è niente in mezzo.
Michael R. Chernick,

@MichaelChernick ovviamente abbiamo a che fare solo con distribuzioni discrete qui.
Hobbs

L'OP ha detto che i bit sono solo 1 o 0 e nulla in mezzo.
Michael R. Chernick il

1
@MichaelChernick corretto.
Hobbs

1

Se si esegue una ricerca binaria confrontando ciascun bit, è necessario lo stesso numero di passaggi per ciascun numero di 8 bit, da 0000 0000 a 1111 1111, entrambi hanno la lunghezza di 8 bit. Ad ogni passo della ricerca binaria, entrambe le parti hanno una probabilità 50/50 di verificarsi, quindi alla fine, poiché ogni numero ha la stessa profondità e le stesse probabilità, senza alcuna scelta reale, ogni numero deve avere lo stesso peso. Pertanto, la distribuzione deve essere uniforme, anche quando ogni singolo bit è determinato da lanci di monete.

Tuttavia, il numero dei numeri non è uniforme e sarebbe uguale nella distribuzione al lancio di 8 monete.


1

C'è solo una sequenza con otto zeri. Vi sono settanta sequenze con quattro zeri e quattro.

Pertanto, mentre 0 ha una probabilità dello 0,39% e 15 [00001111] ha anche una probabilità dello 0,39% e 23 [00010111] ha una probabilità dello 0,39%, ecc., Se si sommano tutte e settanta le probabilità dello 0,39% ottieni il 27,3%, che è la probabilità di averne quattro. La probabilità di ogni singolo risultato a quattro e quattro non deve essere superiore allo 0,39% affinché questo funzioni.


Ciò non cambia il fatto che tutte e 256 le sequenze sono ugualmente probabili.
Michael R. Chernick,

@MichaelChernick Non ho detto di sì, ho detto esplicitamente che hanno tutti una probabilità dello 0,39%, sto affrontando le ipotesi di OP.
Casuale 832,

Hai ragione. È un altro modo di dire quello che ho detto nella mia risposta. Alcune delle altre risposte sono sbagliate.
Michael R. Chernick,

1

Considera i dadi

Pensa a lanciare un paio di dadi, un esempio comune di distribuzione non uniforme. Per motivi di matematica, immagina che i dadi siano numerati da 0 a 5 invece dei tradizionali da 1 a 6. Il motivo per cui la distribuzione non è uniforme è che stai osservando la somma dei tiri di dado, in cui più combinazioni possono produrre stesso totale di {5, 0}, {0, 5}, {4, 1}, ecc. tutti generando 5.

Tuttavia, se dovessi interpretare il tiro di dado come un numero casuale di 2 cifre nella base 6, ogni possibile combinazione di dadi è unica. {5, 0} sarebbe 50 (base 6) che sarebbe 5 * (61) + 0 * (60) = 30 (base 10). {0, 5} sarebbe 5 (base 6) che sarebbe 5 * (60) = 5 (base 10). Come puoi vedere, esiste una mappatura da 1 a 1 di possibili tiri di dado interpretati come numeri nella base 6 rispetto a una mappatura da molti a 1 per la somma dei due dadi per tiro.

Come sottolineano sia @Sycorax che @Blacksteel, questa differenza si riduce davvero alla questione dell'ordine.


0

Ogni bit scelto è indipendente l'uno dall'altro. Se consideri per il primo bit c'è un

  • 50% di probabilità sarà 1

e

  • 50% di probabilità sarà 0.

Questo vale anche per il secondo bit, il terzo bit e così via in modo da finire così per ogni possibile combinazione di bit per rendere il tuo byte che hai (12)8 = 1256 possibilità che si verifichi quel numero intero a 8 bit univoco.


Tutte queste affermazioni sono vere, ma ciò non spiega perché i lanci di monete, che sono anche equi e indipendenti, hanno solo 9 esiti distinti quando un risultato è definito come il numero di teste e code.
Sycorax dice di reintegrare Monica il

Questo è solo il risultato della collocazione dei risultati in un sistema ordinato dopo averli scelti. La stessa distribuzione verrebbe raggiunta anche se i bit casuali fossero posizionati in posizioni casuali sul byte. Avrai anche la stessa distribuzione sui lanci di monete dal modo in cui inquadra la domanda per trovare la possibilità di ottenere una particolare combinazione di teste e code, come HHTHTTTH. Avrai una probabilità 1/256 di ottenere quell'esatta sequenza di lanci di monete per gli 8 lanci di monete che vengono eseguiti ogni volta.
Ahemone,

Queste sono tutte buone informazioni da includere nella risposta stessa. Il mio commento non mette in discussione ciò che hai detto tanto quanto l'omissione di un indirizzo diretto della fonte di confusione di OP: la relazione tra bit e lanci di monete.
Sycorax dice di reintegrare Monica il

Dovrei anche dire che per arrivare al valore atteso di OP di 4 stanno cercando di trovare la probabilità di n molti 1 o n molti 0 in un dato byte. Questa definizione della domanda darebbe alla distribuzione binomiale che si aspettavano nella loro mente piuttosto che la distribuzione uniforme di trovare la probabilità di ottenere un certo valore da quei bit casuali.
Ahemone,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.