Quanto random e' il random?

Cinema, Peperoncini, Navi Spaziali, Barbecue, Fisica Quantistica… TUTTO!
User avatar
Mano[FA]
oO Team
oO Team
Posts: 2163
Joined: 24/10/2004 15:47
Location: UK

Quanto random e' il random?

Post by Mano[FA] » 24/01/2012 23:38

Snuffo, settimana scorsa, ha lanciato Il gioco del SuperEnalotto.O. Cio' che una mente creativa crea, una mente malata lima e distrugge. No, dai. Magari questa volta non distrugge ;)

Ho subito pensato ad un upgrade, in particolare per permettere al suo creatore di partecipare e per renderlo in qualche modo piu' trasparente perche', quando c'e' di mezzo la fortuna e ambitissimi premi in una comunity di lamers, la puzza di broglio la si sente ancora prima di avviare il browser. La psicosomatizziamo. E poi si impara qualcosa.

Possiamo "estrarre" numeri casuali in maniera imprevedibile ma ripetibile? Sembra una contraddizione in termini, ma grazie ad un "difetto" dei nostri PC la cosa e' possibile.

I computer, infatti, hanno problemi a creare numeri casuali (non che noi uomini siamo molto meglio, ma magari ne parleremo un'altra volta). Sono persino piu' zelanti e pignoli del sottoscritto. Sono bravissimi a seguire istruzioni dettagliate, ma non sanno proprio come stupirci.

Come fai a dare istruzioni precise per creare numeri imprevedibili? Ci sono tantissime istruzioni per creare serie di numeri "a caso" ma producono tutte lo stesso risultato!!!! Il "trucco" e' di introdurre un elemento di "sorpresa", un seme, che poi dia il via all'algoritmo tanto preciso e ripetibile. Dato lo stesso seme, produrremo la stessa serie. Cambiando il seme, la serie sara' completamente diversa e indipendente.

Questo pero' sposta semplicemente il problema. Come creiamo questo elemento di sopresa? Possiamo fornirlo noi, o chiedere al computer di crearlo partendo da variabili che dovrebbero cambiare spesso (la data, l'ora, la posizione del mouse, in nome del PC...) in modo da avere un punto di partenza sempre diverso e produrre serie sempre diverse. quindi il nostro algoritmo e' "buono" quanto buono e' il nostro seme.

Quanto e' "buono" il nostro seme? Beh, chiediamoci due cose:
- Quanti semi diversi possiamo creare?
Se usiamo la somma di ore, minuti e secondi, per esempio, possiamo avere solo valori tra 0 e 141. Significa 141 possibili estrazioni. Un po' pochine.

- Come sono "distribuiti" questi semi? Nell'esempio di prima 141 lo otteniamo solo alle 23:59:59, mentre 72 si ottinere alle 12:30:30, ma anche alle 12:29:31 o alle 10:40:22... quindi la combinazione che ha seme 72 e' parecchio piu' probabile della combianzione che ha seme 141.

Quindi e' molto importante creare un seme che possa avere un numero altissimo di valori tutti equalmente probabili.

Nel caso de "Il gioco del SuperEnalotto.O", inoltre, volevo rendere la vita difficile a chi tentasse di barare. Vediamo come

Code: Select all

numeri <- c(1:30)
estrazioni <- 4
maxValSeme <- 2120000000
qui semplicemente "inizializiamo" alcune variabili. "numeri" contiene i numeri da 1 a 30, "estrazioni" il valore 4 e "maxValSeme" un numero grande (poi vedremo perche')

Code: Select all

ore_Penultimo_post <- 18
minuti_Penultimo_post <- 2
numero_Ultimo_Post <- 149656
numero_casuale <- 1131965
Qui raccogliamo un po' di "elementi di sorpresa". Alcuni (i primi tre) abbastanza imprevedibili mentre ogni giocatore fa le sue puntate, ma verificabili in qualunque momento da chiunque, l'ultimo davvero casuale (ma non verificabile) ottenuto da apparecchi che misurano variabili imprevedibili (quelle atmosferiche, manco i supercalcolatori riescono a prevederli)

Code: Select all

seme <- (ore_Penultimo_post + numero_Ultimo_Post) * (minuti_Penultimo_post + numero_Ultimo_Post) + numero_casuale
Ora creiamo un seme combinando tutta "l'entropia" a nostra disposizione. Questo va da 0 (se i minuti e il numero casuale e' zero) a un numero che puo superare 22.000.000.000 (22 miliardi). Il limite e' dato dal numero_Ultimo_Post. Chissa' quanto crescera'.

Purtroppo pero' e' difficile sapere la distribuzione di questi numeri. Il numero casuale e', appunto, casuale e quindi ci garantisce una distribuzione uniforme dei valori. Ore, minuti e numero dell'ultimo post non sono per nulla uniformi, ma hanno l'effetto di creare parecchie distribuzioni uniformi e aumentando il numero di valori che il nostro seme puo' assumenre. Infine un ultimo problema. Il nostro programma che crea numeri casuali non puo' accettare numeri grandi a piacere. Per fortuna il limite e' pittosto alto: "maxValSeme" = 2.120.000.000 (il vero numero e' un po' piu' alto, ma non so quale sia)

Code: Select all

semino <- seme - ( floor(seme/maxValSeme) * maxValSeme )
Questo, di fatto divide il seme per il maxValSeme e ne ottiene il resto (che quindi, al massimo, e' quanto maxValSeme).

Code: Select all

set.seed(semino)
vincenti <- sort(sample(numeri, size = estrazioni, replace = FALSE, prob = NULL) )
Ora possiamo fornire l'elemento sorpresa e chiedere al programma di darci un capione casuale (sample) di 4 "numeri" estratti senza ripescaggio (replace = FALSE) e di metterceli in ordine ascendente (sort)

Se mettete questo codice in R, otterrete che i numeri vincenti sono

8 9 13 22

In questo modo chi scommette dei numeri non sa quali siano le 4 variabili che daranno origine al seme. Chi posta il numero casuale potrebbe barare e postarne uno che ha deciso prima, ma gli altri 3 numeri sono a lui sconosciuti quando posta la sua combo. Chiunque puo' verificare chi ha vinto.

GG

User avatar
Lysor_o.O
Veteran
Veteran
Posts: 2448
Joined: 12/12/2002 00:31
Location: Milano

Re: proposta sistema equo

Post by Lysor_o.O » 25/01/2012 01:06

Avviso ai naviganti: se la matematica vi fa venire la nausea, saltate questo post! :asd:

Mano, ho guardato il codice... Come l'hai messo tu, il semino non serve quasi a niente. :lol:
Guarda come generi il seme:
Mano[FA] wrote:

Code: Select all

maxValSeme <- 2120000000
seme <- (ore_Penultimo_post + numero_Ultimo_Post) * (minuti_Penultimo_post + numero_Ultimo_Post) + numero_casuale
semino <- seme - ( floor(seme/maxValSeme) * maxValSeme )
Il numero dell'ultimo post è attorno a 150.000. A prescindere dall'ora e minuto dell'ultimo post (che sono numeri molto più piccoli!), il risultato della moltiplicazione sarà dell'ordine di 150.000^2, quindi 22 miliardi e 500 milioni. Il numero casuale da sommare, per come hai deciso di generarlo, è al massimo di 100 milioni. Roba piccola. Nel momento in cui fai la divisione verrà circa 10,6 (a prescindere da ora, numero del post, e numero casuale), e quindi la funzione floor ti darà sempre 10, costante, che poi moltiplichi per una costante. Il passaggio da seme a semino non è per nulla casuale, è deterministico.

Se vuoi puoi anche calcolare il caso minimo (ore 0 e 0 minuti, numero casuale: 0) e massimo (23 e 59, numero casuale: 100 milioni), e vedi che il risultato della divisione sarà sempre 10,6. Tra l'altro bisognerebbe vedere se il tuo generatore arriva fino al numero 100 milioni compreso o escluso, ma va beh.

Ammetto però che c'è un risultato che non mi aspettavo: nella migliore delle ipotesi (post alle 23:59 con numero casuale pari a 100 milioni) basta arrivare al post numero 152.341 (quindi ne mancano relativamente pochi!) per far "scattare" la funzione floor (nel senso che la divisione vale 11). E la volta dopo che scatta (quando la funzione floor vale 12) è al post numero 159.145 - ancora una volta, supponendo che il generatore dia 100.000.000 e che il post sia fatto alle 23:59. Se a qualcuno interessa, per calcolare questi valori basta inserire questa equazione

Code: Select all

(x+59)*(x+23)=12*2120000000-100000000
a questo indirizzo, sostituendo al 12 il valore che si vuole avere per la funzione floor.

E' vero che raggiunti questi post "soglia" (il numero 152.341, il 159.145...) si ha un certo periodo in cui a seconda dell'ora e del numero casuale si ricade in un risultato o nell'altro, ma l'incertezza è comunque tra 2 soli numeri. Quindi se non mi è sfuggito qualcosa di grosso direi che il passaggio da seme a semino è inutile.

Soluzioni? Io al posto della funzione floor prenderei la parte decimale del numero (che puoi esprimere come: x - floor(x)), quindi facendo così (occhio alle parentesi!):

Code: Select all

semino <- seme - ( seme/maxValSeme - floor(seme/maxValSeme) ) * maxValSeme 
Il risultato della parentesi grossa sarà decimale, quindi anche il semino; se per il seed non va bene, basta floorare la parentesi grossa, così:

Code: Select all

semino <- seme - floor( ( seme/maxValSeme - floor(seme/maxValSeme) ) * maxValSeme )
In pratica la parte decimale funzionerebbe come fattore di scala per maxValSeme; con questi numeri il tutto non dovrebbe mai risultare negativo (il seme è molto più grande di maxValSeme), ma in generale potrebbe succedere: nel caso si può prendere il valore assoluto.
Image
Tu vedi delle cose e chiedi: perché? Ma io sogno di cose che non ci sono mai state, e che forse non ci saranno mai, e dico: perché no?
--- Wolfgang Güllich

User avatar
Mano[FA]
oO Team
oO Team
Posts: 2163
Joined: 24/10/2004 15:47
Location: UK

Re: Quanto random e' il random?

Post by Mano[FA] » 25/01/2012 11:52

Il passaggio da seme a semino non è per nulla casuale, è deterministico.
Su questo sono d'accordissimo e non puo' essere altrimenti dato che non aggiungo nessuna nuova variabile. Lo scopo di passare a "semino" e' per essere certo che questo sia nei limiti accettabili da set.seed. Io ho consigliato un sito per ottenere un numero casuale, ma chi lo propone puo' fornire qualunque numero intero positivo.
Nel momento in cui fai la divisione verrà circa 10,6 (a prescindere da ora, numero del post, e numero casuale)
esatto, ma quello che importa non e' il 10, e' il "circa". 10 lo ri-moltiplico per maxValSeme, tornando sull'ordine di grandezza di seme. La differenza tra i due numeri e' cio' che mi interessa e che conserva tutta "l'entropia" dei 4 fattori.
Sono d'accordo pero' che come e' adesso, la moltiplicazione di due numeri molto simili e' prevedibile e spesso nel "range" di numero_casuale, rendendo alcuni numeri piu' probabili di altri.

Potrei proporre questa alternativa

seme <- (ore_Penultimo_post * minuti_Penultimo_post * numero_Ultimo_Post * 100000000) + numero_casuale

In questo modo un incremento di anche solo una unita' di qualunque delle variabili "sposta" di 100000000 il punto di partenza, a cui viene aggiunto un numero casuale. La distribuzione di tali numeri e' quindi piu' uniforme (non sara' mai uniforme a meno di usare solo numeri casuali come punto di partenza). Poi ritrasformiamo in modo che semino sia nel range prestabilito.

aspetto commenti ;)

User avatar
Shauron_o.O
Veteran
Veteran
Posts: 1711
Joined: 13/01/2007 10:30
Location: Napoli
Contact:

Re: Quanto random e' il random?

Post by Shauron_o.O » 25/01/2012 14:07

Non sono mai stato bravo in matematica, non sono mai riuscito a ricordarmi le tabelline dall'1 al 9 alle elementari, sapevo solo quella dell'1, 2, 5 e 9 :asd:
Ma in merito alla casualità dei numeri su un sistema informatico vorrei esprimere un opinione personale, nei circuiti elettrici domestici non credo che la tensione sia sempre pari a 220v senza alcun decimale, sicuramente ci saranno degli sbalzi continui e insignificanti dopo quel 220v.
Nel caso in cui qualcuno avrebbe la necessità di generare numeri random non potrebbe costruire una macchina, a monte del pc (magari il trasformatore stesso) che legga queste piccole variazioni e le usi come seme?
Di per se non credo sia possibile, tramite un computer, generare numeri completamente random perché il computer di per sè non compie nessuna azione in maniera random altrimenti non sarebbe più un pc ma un qualcosa che genera cose proprie.

La matematica poi l'ho definitivamente abbandonata quando iniziavo a vedere espressioni, seni, coseni, frazioni e ommidiononvoglioneancheparlarnerne...è stato un trauma scoprire che l'elettronica e l'informatica ruotava intorno alla matematica :asd:
Image

User avatar
Mano[FA]
oO Team
oO Team
Posts: 2163
Joined: 24/10/2004 15:47
Location: UK

Re: Quanto random e' il random?

Post by Mano[FA] » 25/01/2012 14:51

si, si. Se ti serve creare numeri casuali, puoi comprare una scheda apposta. Nulla cambia pero'. Un algoritmo non puo creare numeri casuali senza una fonte "esterna" (la scheda, un barometro, dei dadi che rotolano...)

User avatar
snuffz
Veteran
Veteran
Posts: 4381
Joined: 07/01/2003 14:09
Location: Torino
Contact:

Re: Quanto random e' il random?

Post by snuffz » 25/01/2012 15:42

Che fatica!
Il post di Mano l'ho seguito con tantissime difficoltà (poi hai anche commesso due errori di battitura che mi hanno confuso ulteriormente
numeri <- c(1:30)
estrazioni <- 40
maxValSeme <- 2120000000

qui semplicemente "inizializiamo" alcune variabili. "numeri" contiene i numeri da 1 a 30, "estrazioni" il valore 4 e "maxValSeme" un numero grande (poi vedremo perche')
= 2.120.000.000 (il nero numero e' un po' piu' alto
nella mente di snuffz: "Il nero numero???? E cos'è il nero numero??"
Il post di lysor non sono riuscito a seguirlo :arcanoid:
Mi sembra di capire comunque che serve sempre un numero casuale che arrivi dall'esterno, per rendere la funzione davvero random e non manipolabile.
Però per esempio il sito che hai linkato genera dei numeri ogni volta diversi, cioè se io e te adesso apriamo il browser genera comunque numeri diversi. Come faccio a sapere che il numero casuale che hai riportato tu sul forum era veramente quello del sito, se non posso controllarlo?
Naturalmente mi sfugge parecchio del tuo ragionamento, quindi correggimi.
Comunque pensavo: e se per esempio codificassimo, ad una tal ora prestabilita, le prime 2 parole del primo articolo del http://www.repubblica.it trasformando lettere in numeri?
Ad esempio:
Image
IL MONITO -> 9-10 11-13-12-9-13

Numero casuale: 910111312913

User avatar
Mano[FA]
oO Team
oO Team
Posts: 2163
Joined: 24/10/2004 15:47
Location: UK

Re: Quanto random e' il random?

Post by Mano[FA] » 25/01/2012 17:00

e bravo Snuffo!!

Scusa per gli errori (ora corretti), spero sia stato comunque in qualche modo interessante.

Approvo il tuo suggerimento! Perdiamo un po' in randomicita', ma rendiamo decisamente piu' difficile la vita a chi vuole lamerare

solo 2 modifiche:

usiamo il sito Ansa. La Repubblica cambia spesso e se clicchi sul link, ti porta ad un articolo con titolo diverso. Invece questa pagina dovrebbe essere stabile ed ha la data che dimostra quando e' stata presa.
[edit]no, anche questa si modifica...[/edit]

E poi facciamo fare la conversione al nostro programma

Code: Select all

# solo lettere a-z e spazio
testo_random <- "Il monito" 
alfabeto <- c(letters, " ")
lettere <- strsplit(tolower(testo_random), "")[[1]]
numero_random <- as.numeric(paste(as.character(match(lettere, alfabeto)), collapse = ''))

User avatar
Bubillus
oO
oO
Posts: 684
Joined: 13/08/2011 17:41
Blizzard BattleTag: Bubillus#2227

Re: Quanto random e' il random?

Post by Bubillus » 25/01/2012 17:17

Come dice Antunello Venditti: la matematica non sarà mai il mio mestiere. Però ricordo dai miei studi di informatica a vapore che qualsiasi random poi tanto random non sarà mai perché il processo (o il procedimento) che genera questi valori possiede delle caratteristiche instrinseche che ne descrivono le proprietà e quindi da un valore X inserito in un dato algoritmo dovrebbe essere possibile prevedere il valore X1 e via così.
Questo per il famoso paradosso: può Dio in quanto onnipotente creare un peso tale da non riuscire a sollevarlo?
Ma ripeto ragiono da un punto di vista informatico e non matematico, non so come funziona R e non ho capito un cicca del 50% dei post precedenti. Però generare una sequenza di N numeri casuali dovrebbe, a mio parere, prevedere N osservazioni di un dato fenomeno da usare come seme.
Per quanto riguarda la proposta di Snuffz so però che la distribuzione delle lettere dell'alfabeto latino non è uniforme (lo Scarabeo insegna) e questo violerebbe un'altra regola che vorrebbe che gli elementi da utilizzare come campione (o come seme, se ho capito cosa intendete per "seme") fossero tutti equalmente probabili.
Ma sono gnurànt in materia, il primo impatto con la questione l'ebbi il giorno in cui scoprii la coppia di istruzioni RANDOM e RANDOMIZE sui miei primi PC a manovella dove girava il BASIC :nod: .
"Secondo le leggi della fisica e dell'aerodinamica, la struttura alare del calabrone in relazione al suo peso non è adatta al volo. Ma lui non conosce queste leggi e vola"

User avatar
Mano[FA]
oO Team
oO Team
Posts: 2163
Joined: 24/10/2004 15:47
Location: UK

Re: Quanto random e' il random?

Post by Mano[FA] » 25/01/2012 18:14

Bubillus wrote: Però generare una sequenza di N numeri casuali dovrebbe, a mio parere, prevedere N osservazioni di un dato fenomeno da usare come seme.
No. faccio un esempio. R genera tutte le possibili estrazioni e poi sceglie la numero N (seme) con un seme solo puoi avere una sequenza complessa. Ovviamente i valori che puo' assumere il seme dovrebbero essere di piu' del numero di combinazioni possibili.
Bubillus wrote:Per quanto riguarda la proposta di Snuffz so però che la distribuzione delle lettere dell'alfabeto latino non è uniforme
questo e' vero, ma dobbiamo compromettere un po' di randomicita' per permetter la riproducibilita', trasparenza e verificabilita'.

User avatar
Bubillus
oO
oO
Posts: 684
Joined: 13/08/2011 17:41
Blizzard BattleTag: Bubillus#2227

Re: Quanto random e' il random?

Post by Bubillus » 26/01/2012 08:37

Mano[FA] wrote:R genera tutte le possibili estrazioni
Forse ora ho capito, sono tornato sui banchi di scuola :D
Quindi, occorre una combinazione di 4 numeri da estrarre da un pool di 30. Se non mi ricordo male fatto C=4 e P=30 il numero di combinazioni possibili è dato da P!/C!*(P-C)! ovvero ... uhm... Excel mi dice 27.405 combinazioni. R calcola tutte queste combinazioni e poi sulla base di un numero N casuale (o abbastanza casuale) sceglie l'Nesima che sarà la combinazione vincente. Quindi tutto sta a trovare un sistema per generare con un grado accettabile di casualità il numero N.
Altro quiz: R come genera tutte le possibili combinazioni? Se io dovessi fare la cosa a mano (per esempio per calcolare le combinazioni di 3 numeri da un pool che va da 1 a 5 = 5!/3!*(5-3)! = 120/12 = 10) farei un elenco così:
1 2 3 - 1 2 4 - 1 2 5 - 1 3 4 - 1 3 5 - 1 4 5 - 2 3 4 - 2 3 5 - 2 4 5 - 3 4 5
Il programma R si comporterà nello stesso modo? Ossia in conseguenza di un valore sufficentemente basso di N nella combinazione vincente ci sarà sempre il numero 1 etc etc... oppure, detto in un altro modo, se N è uguale (mettiamo) a 244 la combinazione vincente sarà identica alla combinazione ottenibile con N = 245 tranne che per una cifra e che per serie di N comprese entro un certo range le combinazioni possibili variano solo per 1 numero?
Uno scenario del genere avrebbe una certa "regolarità nella distribuzione della casualità", un non so che di... strano poiché per assurdo a valori del pool molto alti sarebbe come avere un pazzo piromane nella Biblioteca di Babele, potrebbe fare tutti i danni che vuole ma ci sarebbe comunque un "ordine" di fondo che sarebbe resistente anche a livelli alti di entropia.
Non so se mi sono capito.... :look: è che a volte faccio casini tra informatica, metefisica e ontologia e vado nel pallone.
Però all'atto pratico mettiamo che si trattasse di una lotteria dove fosse previsto un primo premio per chi azzecca la combinazione vincente e dei premi minori per chi invece indovina (mettiamo) 3 numeri su 4. Basterebbe mettersi daccordo per giocare tutti una serie di combinazioni adiacenti che si alzerebbero a dismisura le possibilità di far saltare il banco.
"Secondo le leggi della fisica e dell'aerodinamica, la struttura alare del calabrone in relazione al suo peso non è adatta al volo. Ma lui non conosce queste leggi e vola"

User avatar
Mano[FA]
oO Team
oO Team
Posts: 2163
Joined: 24/10/2004 15:47
Location: UK

Re: Quanto random e' il random?

Post by Mano[FA] » 26/01/2012 10:43

Bubillus wrote: Altro quiz: R come genera tutte le possibili combinazioni?
In verita' R non genera tutte le possibili estrazioni. Il mio era un esempio semplice per far capire che puoi creare serie casuali di 4 numeri anche con un solo seme. Nella specifica, credo che R "mischia" i 30 numeri a caso (e si basa sul seme per decidere come fare) e poi prende i primi 4. Ovviamente, due semi consecutivi danno due "mischiaggi" completamente indipendenti. Sono piuttosto sicuro che ci sia non poca ricerca per assicurarsi indipendenza tra seme e risultato. Per iniziare puoi leggere le citazioni alla pagina del manuale della funzione set.seed. In particolare, interessante il titolo di questa:
Matsumoto, M. and Nishimura, T. (1998) Mersenne Twister: A 623-dimensionally equidistributed uniform pseudo-random number generator, ACM Transactions on Modeling and Computer Simulation, 8, 3–30.

Se interssato il pdf e' qui. Dice che il periodo e' di 2 alla 19937 (prova a farlo calcolare ad excel ;) ) cioe' riesce a creare numeri casuali equamente distributi e "ricomincia da capo" solo dopo 2 alla 19937 numeri. (Se excel non ce la fa, i miei conti mi dicono che e' un numero con circa 6000 cifre)

che e' il default usato da R. Il limite, davvero, e' quanto buono e' il nostro seme.

User avatar
Bubillus
oO
oO
Posts: 684
Joined: 13/08/2011 17:41
Blizzard BattleTag: Bubillus#2227

Re: Quanto random e' il random?

Post by Bubillus » 26/01/2012 10:57

«"Quarantadue!" urlò Loonquawl. "Questo è tutto ciò che sai dire dopo un lavoro di sette milioni e mezzo di anni?"
"Ho controllato molto approfonditamente," disse il computer, "e questa è sicuramente la risposta. Ad essere sinceri, penso che il problema sia che voi non abbiate mai saputo veramente qual è la domanda."»
Ci vorrebbe davvero Pensiero Profondo :D

Comunque sì, detto in quel modo mi garba di più anche se, trattandosi alla fine di una programma che gira su una macchina estremamente veloce ma stupida che ragiona in termini di 1 e di 0, alla base ci deve sempre essere un algoritmo formato da una sequenza di istruzioni finite e che deve portare ad un risultato effettivo. Ma di matematica me ne intendo come di dialetto venusiano quindi direi che sicuramente un buon grado di casualità può essere raggiunto asintoticamente e quindi mi accontento :nod:
Riguardo al PDF... dopo le parole "This paper" ho inziato a non capirci più nulla quindi mi fido ciecamente :)

P.S. La mia accoppiata PC+Excel buonanima è andata nel pallone con 2 elevato alla 1024ima, fino a 1023 ce l'ha fatta (8,9885E+307) poi il nulla
"Secondo le leggi della fisica e dell'aerodinamica, la struttura alare del calabrone in relazione al suo peso non è adatta al volo. Ma lui non conosce queste leggi e vola"

User avatar
ayakuccia_o.O
oO Team
oO Team
Posts: 2398
Joined: 02/02/2003 12:33
Location: Sestri Levante (GE)

Re: Quanto random e' il random?

Post by ayakuccia_o.O » 26/01/2012 18:38

io non sono riuscita neanche ad arrivare a metà del primo post....mi fate paura quando fate così :look:

User avatar
Mano[FA]
oO Team
oO Team
Posts: 2163
Joined: 24/10/2004 15:47
Location: UK

Re: Quanto random e' il random?

Post by Mano[FA] » 31/01/2012 13:11

Se avete guardato in maniera dettagliata l'ultima versione del codice che ho usato per l'estrazione di venerdi' scorso, vi sarete accorti che non ho implementato alla lettera il suggerimento di Snuffz.
Per l'esattezza, dopo aver convertito le lettere in numeri, prendo solo le prime 14 cifre. Perche'?
La risposta e' interessante e svela un altro "difetto" dei PC. Sebbene siano macchine numeriche, hanno i loro limiti quando devono trattare con numeri grossi. Ogni numero infatti deve stare in una (o due) cellette di memoria, ciascuna con 32 bit di spazio. Per farla breve un computer riesce a tenere in memoria un numero fino a che ha circa 15 cifre (se scritto in base 10) dopo di che inizia ad… approssimare! Tiene in memoria le 15 cifre significative e l'esponente per cui moltiplicarle. In questo modo anziche' essere limitato al range -9.223372e+18, 9.223372e+18 (se usasse tutti i 64 bits per tener traccia del numero), destina un bit al segno, 11 bits all'esponente, e 52 bits alla precisione del numero, potendo rappresentare numeri tra circa -1e+308 e 1e+308, quindi numeri che, in decimale, avrebbero 308 cifre, di cui pero' solo le prime 15 o 16 significative.

Quindi, tornando a noi, se non usassi solo le prime 14 cifre del numero, la frase "Commissariamento Grecia " e "Commissario Montalbano" darebbero lo stesso numero random, anche dopo averlo sommato al prodotto degli altri tre numeri (andrebbero ad aggiungersi alla parte non significativa del numero).

Resta inoltre il problema che le prime due parole di un articolo di un sito di notizie sono tutt'altro che random (anche se, comunque, parecchie). La soluzione che mi e' venuta in mente e' di usare, per inizializzare, l'estrazione del lotto, ma… mi fa un po' specie usare un'estrazione per inizializzare un'estrazione. Ma a voi suggerimenti e decisioni!

User avatar
Bubillus
oO
oO
Posts: 684
Joined: 13/08/2011 17:41
Blizzard BattleTag: Bubillus#2227

Re: Quanto random e' il random?

Post by Bubillus » 01/02/2012 08:41

La cosa si fa interessante ma.... ideona!
  • Metodo classico da spia alle prime armi (John Le Carré non usa 'sto stratagemma dai temini delle elementari): designare all'inizio di ogni estrazione il titolo di un libro da cui estrarre una parola (o una stringa di lettere per la precisione) scelta nella pagina N alla riga R dove N e R sono frutto di un referendum effettuato prima di scegliere il titolo
  • Metodo ganzo: utilizzando le stringhe generate da reCaptcha (dai ammettetelo questa è buona anche se ammetto di difficile implementazione visto come fuziona reCaptcha)
  • A mali estremi resta sempre Image resta solo da trovare un piccino atto allo scopo da bendare
"Secondo le leggi della fisica e dell'aerodinamica, la struttura alare del calabrone in relazione al suo peso non è adatta al volo. Ma lui non conosce queste leggi e vola"

User avatar
Iltech_o.O
Veteran
Veteran
Posts: 1191
Joined: 22/04/2009 22:06
Blizzard BattleTag: iltech#2942
Location: Bergamo

Re: Quanto random e' il random?

Post by Iltech_o.O » 02/02/2012 13:48

E' un discorso interessante. Il random è relativo, dipende dal numero di campioni.

Supponiamo che lanciamo casualmente una moneta, e segnamo su un foglio di carta i risultati. La statistica moderna può dimostrare che a infiniti lanci il numero di volte che esce testa o croce sono identici.
Da qui si basa la frase che preferiscono gli esperti in statistica:
"La statistica è una scienza che permette di essere certi su qualcosa di incerto"

Da qui nascono tutte le storie tipo: Numeri ritardatari al lotto, in un macrocampo. O molto semplicemente, il giusto pensare che se prendi un gratta e vinci ed hai perso hai più probabilità di vincere se ne compri un altro.

Teoria del gioco a raddoppio: Bandita da tutti i casinò, se vi bekkano passate dei guai bruttissimi e venite allontanati dal tavolo

Ci basiamo sul campo Rosso e Nero, sul normale tavolo da casinò.
Luci soffuse qualche birretta e tecniche del vago potrebbero aiutare in questa nostra piccola truffettina.
Aspettiamo che uno dei due sia ritardatario, meglio se lo è da 4+ mandate. Quindi supponiamo che sia uscito il nero quattro volte.

1° MATCH

Ottimo, noi puntiamo 5 euri sul rosso

A questo punto se esce il nero abbiamo perso 5 euro -> raddoppiamo la posta e mettiamo 10 euro sul rosso
Se è uscito il rosso -> abbiamo guadagnato 5 euro

2° MATCH

Nel caso di perdita precedente puntiamo quindi 10€ Sul rosso
Nel caso di Vincita precedente puntiamo ancora 5 euri sul rosso

3° Match

Nel caso di ulteriore perdita precedente puntiamo 20 euri sul rosso
E nel caso di vincita precedente andiamo sempre coi soliti 5 euri sul rosso


Faccio notare che:

- Ogni volta che uscirà il rosso, con questa tecnica clinicamente straillegale, ci saremo rifatti di tutte le perdite, e in più avremo guadagtnato 5 euri. E si basa proprio sul fatto che sto rosso prima o poi deve uscire, e sul 50/50 ha molte possibilità di uscire in poche mandate. Ovvio bisognerebbe solo avere il capitale economico per stare dietro.

Con la tecnica del 5 euri quindi:
1: 5 euro
2: 10 euro
3: 20 €
4: 40 €
5: 80 €
6: 160 €
7: 320 €
8: 640 €

Se li sommiamo tutti samo a 1275 euri. Praticamente possiamo dire che potremmo andare (se fosse legale) al casinò con 1275 euri (facciamo 1300 nel caso ci vogliamo sparare qualche birra) ed essere coperti per 4 + 8 uscite consecutive di un colore opposto a quello che puntiamo (e li non si dice più sfigati, ma matematicamente sfigati), che deve essere obbligatoriamente sempre lo stesso per non resettare il campo probabilistico. Sarebbe come perdere un gratta e vinci e comprarne un altro di un altro tipo, che è la cosa più stupida che possiamo fare.
Al terzo raddoppio comunque un adeguato agente (generalmente non bello e sopratutto non piccolo) vi invita a andarvene dal casinò - e in quelli online venite sbattuti fuori dal computer

Vincite sicure, venghino signori
Image

User avatar
Bubillus
oO
oO
Posts: 684
Joined: 13/08/2011 17:41
Blizzard BattleTag: Bubillus#2227

Re: Quanto random e' il random?

Post by Bubillus » 02/02/2012 15:14

Il progetto "qualche birra al casinò" finanziato con i 25 euri dati da 1.300 - 1.275 è puramente teorico e non realizzabile.
Sfogliando qui e là internet ho trovato un esempio bellissimo che non conoscevo che spiega perfettamente il concetto di "più ci provo più possibilità ho".
In pratica un tizio inizia a scommettere sul testa o croce. Punta 5 euri su testa e invece esce croce e perde, raddoppia la posta (10 euri) e scommette ancora su testa e invece esce ancora croce e perde. Pensa "beh ora uscirà testa", punta il doppio (20 euri) e mannaggia esce di nuovo croce. E ancora, e ancora... sta benedetta testa non esce proprio... 6 ... 7 ... 8 ... 9 volte e ogni volta raddoppia la puntata per cercare di recuperare. Al decimo tiro ormai è arrivato a puntare 2.560 euri e sceglie sempre testa perché dopo 9 volte che esce croce è convinto che le possibilità che esca testa siano altissime. Arriva un altro tizio che non sa quello che è successo prima, lo vede e dice: "Ma lei è pazzo a scommettere tutti sti soldi quando le possibilità sono 50/50?"
Beh... chi dei due ha ragione? E' ammissibile un sistema (un universo :laugh: ) dove esca sempre e solo croce oppure c'è una legge di fondo che fa in modo che probabilità equivalenti abbiano lo stesso "peso" nel lungo periodo (o nell'immenso spazio, la butto lì hihihihi). Se io tiro per 10 volte il dado ed esce sempre croce deve esserci un alieno su qualche pianeta del sistema di Vega che ottiene 10 volte testa?
"Secondo le leggi della fisica e dell'aerodinamica, la struttura alare del calabrone in relazione al suo peso non è adatta al volo. Ma lui non conosce queste leggi e vola"

User avatar
Mano[FA]
oO Team
oO Team
Posts: 2163
Joined: 24/10/2004 15:47
Location: UK

Re: Quanto random e' il random?

Post by Mano[FA] » 02/02/2012 15:28

Iltech_o.O wrote: Da qui si basa la frase che preferiscono gli esperti in statistica:
"La statistica è una scienza che permette di essere certi su qualcosa di incerto"
Citation needed. Personalmente non ho mai sentito un esperto dire quella frase. E' un detto popolare (tipo rosso di sera bel tempo si spera). In particolare in statistica nessuno ti dice niente di certo. Generalmente ti dicono quanto sia improbabile il contrario ("la probabilita' che le osservazioni siano casuali, sono dello 0.2%")
Iltech_o.O wrote: il giusto pensare che se prendi un gratta e vinci ed hai perso hai più probabilità di vincere se ne compri un altro.
Il giusto pensare? Le probabilita' di vincere sono indipendenti. Il secondo biglietto non "sa" che hai appena perso. L'unico modo di vedere la tua affermazione corretta e' considerare che i biglietti sono di numero finito, ma allora anche la seguente affermazione e' vera: "se prendi un gratta e vinci ed hai perso, chiunque ha piu' probabilita' di vincere se ne compra un altro"
Iltech_o.O wrote: Teoria del gioco a raddoppio: Bandita da tutti i casinò
Non ho mai giocato alla roulette al casino', ma non so se sia vero. Spiego perche'.
Iltech_o.O wrote:- Ogni volta che uscirà il rosso, con questa tecnica clinicamente straillegale, ci saremo rifatti di tutte le perdite, e in più avremo guadagtnato 5 euri.
Esatto. Vinci solo la puntata iniziale, noccioline. In compenso ci sono alcuni aspetti che non consideri.

- Ad un certo punto la roulette chiude. E se eri alla sesta puntata al raddoppio di fila? Perdi 315 euri, Ti ci vogliono altre 63 vittorie da 5 euro per recupararle. Certo potresti tornare il giorno dopo e continuare da dove eri rimasto...
- La cosa funziona se hai un capitale infinito. Anche usando come puntata minima 5 euro e 50% di vincere, ti serve avere 10.235 euro per "scongiurare" che tu perda 10 volte di fila al rosso/nero. E perdere 10 volte di fila succede in un caso su 1024. Non particolarmente comune, ma il casino' vince sui grandi numeri, prima o poi gli entra un pollo che va li con 1000 euro a giocare al raddoppio (si perche' spera di vincere facile facile 20-30 euro!) e li perde tutti.
- C'e' lo zero verde. Sbagli colore 19 volte su 37. Sembra trascurabile, ma la probabilita' che esca il "colore sbagliato" 10 volte di fila, cala da 1 su 1024 a 1 su 748!!! La potenza degli esponenziali!
Iltech_o.O wrote:Se li sommiamo tutti samo a 1275 euri. Praticamente possiamo dire che potremmo andare (se fosse legale) al casinò con 1275 euri (facciamo 1300 nel caso ci vogliamo sparare qualche birra) ed essere coperti per 4 + 8 uscite consecutive di un colore opposto a quello che puntiamo (e li non si dice più sfigati, ma matematicamente sfigati)
Purtroppo le prima 4 non contano. Prova a pensare. Se e' gia' uscito 4 volte rosso, e' estramemente piu' probabile che, comprese quelle, esca 12 volte rosso, ovvero, ha le stesse probabilita' che esca 8 volte rosso. (Se ancora ti sembra strano pensa a numeri piu' piccoli. Se e' gia' uscito 8 volte rosso, qual'e' la possibilita' che esca 9 volte rosso? 1 su 2 o 1 su 512?). Secondo i miei calcoli, alla roulette, esce rosso otto volte di fila una volta su 206. Quindi, di tutti i coloro che vanno li con 1275 euro a giocare al raddoppio, in media, 1 su 206 perde al primo tentativo! Quindi il banco guadagna 1275 euro che gli bastano per rimborsare 255 vittorie da 5 euro. Potrei calcolare quante giocate, mediamente, ti servono, ma facciamo che sono solo 3. Bene con quel guadagno il banco puo' andare avanti 765 turni prima di perderci, ma or di allora, avra' trovato altri 3.7 giocatori che perdono 1275 euro.

Ovviamente piu' giochi e piu' probabile e' che perdi 10-12-18 volte di fila.

Il banco vince sempre.

Per funzionare il gioco non deve finire mai E devi avere un capitale pressoche' infinito.

Posso credere che la cosa sia vietata online, perche' puoi metter su bot che giocano sempre con puntate di pochi centesimi iniziali (in modo da andare avanti per davvero tanto con pochi milioni di capitale iniziale), ma secondo me ai casino' va benissimo che la gente giochi al raddoppio. O se lo vietano e' perche' gli si riempie il tavolo di gente che fa un sacco di "traffico" ma perde poco.

che deve essere obbligatoriamente sempre lo stesso per non resettare il campo probabilistico.


Come per il gratta e vinci, la pallina non sa cosa e' uscito prima. Ad ogni giocata la probabilita' di vincere sono 18/37

Provo a spiegare la legge dei grandi numeri con un esempio.

Ho chiesto al mio PC di estrarre 1 volta rosso o nero.
E' uscito rosso nel 100% dei casi
rosso e' uscito 1 volta piu' che nero.

Ho chiesto al mio PC di estrarre 100 volte rosso o nero.
E' uscito rosso nel 46% dei casi
rosso e' uscito 4 volte meno che nero.

Ho chiesto al mio PC di estrarre 100.000 volte rosso o nero.
E' uscito rosso nel 50.192% dei casi
rosso e' uscito 192 volte di piu' che nero.

Ho chiesto al mio PC di estrarre 100.000.000 volte rosso o nero.
E' uscito rosso nel 50.00204% dei casi
rosso e' uscito 2040 volte di piu' che nero.

User avatar
Bubillus
oO
oO
Posts: 684
Joined: 13/08/2011 17:41
Blizzard BattleTag: Bubillus#2227

Re: Quanto random e' il random?

Post by Bubillus » 02/02/2012 16:03

Mano[FA] wrote:Provo a spiegare la legge dei grandi numeri con un esempio.

....

Ho chiesto al mio PC di estrarre 100.000.000 volte rosso o nero.
E' uscito rosso nel 50.00204% dei casi
rosso e' uscito 2040 volte di piu' che nero.
Non te la cavi con così poco :)
Dimmi PERCHE' alla fine finisce 50-50.
"Secondo le leggi della fisica e dell'aerodinamica, la struttura alare del calabrone in relazione al suo peso non è adatta al volo. Ma lui non conosce queste leggi e vola"

User avatar
Mano[FA]
oO Team
oO Team
Posts: 2163
Joined: 24/10/2004 15:47
Location: UK

Re: Quanto random e' il random?

Post by Mano[FA] » 02/02/2012 16:21

Bubillus wrote: Non te la cavi con così poco :)
Dimmi PERCHE' alla fine finisce 50-50.
No no. Non esiste una fine. Esattamente 50%-50% puo' "capitare" parecchie volte, ma, per definizione, al tentativo successivo si discosta. Diciamo che e' un valore a cui tende.

Non sono sicurissimo, ma la definizione stessa di probabilita' include il concetto di provare un infinito numero di volte. Cioe' la probabilita' che venga testa o croce e' 50% se provando un infinito numero di volte ottieni 50-50. E' un po' un cane che si morde la coda, ma cosi' e'. L'unico modo di assicurarsi che un dado non sia truccato e' di fare un numero infinito di lanci.

Post Reply

Who is online

Users browsing this forum: No registered users and 21 guests