Autore Topic: Il milione di dadi è tratto  (Letto 5579 volte)

lapo

  • Membro
  • Lapo Luchini
    • Mostra profilo
    • lapo
Il milione di dadi è tratto
« il: 2009-05-30 16:48:58 »
E per la serie "la gente si droga", guardatevi questa spettacolare macchina per tirare quantità industriali di d6.

Per chi se lo stesse chiedendo: sì, basta avere qualche nozione di informatica/programamzione/crittografia[1] per estrarre veri numeri casuali in software senza bisogno di costruire una macchina di quel genere, ma quel tipo di approccio riesce a risolvere in maniera più radicale un problema non secondario dell'autore della macchina: CONVINCERE GLI UTENTI della effettiva casualità dei valori estratti.

[1]: o chiedere a me qualche consiglio (GenteCheGioca, basta chiedere; un po' come il dottorato).

Renato Ramonda

  • Membro
  • Renato Ramonda, faccia di Janus
    • Mostra profilo
Il milione di dadi è tratto
« Risposta #1 il: 2009-05-30 22:05:38 »
La cosa piu' bella e' che... i numeri tirati dai dadi saranno (per via del "bias" fisico dei dadi, che molto difficilmente saranno "true") meno casuali di un buon randomizzatore informatico, ed ESTREMAMENTE meno casuali di quelli estratti con una scheda randomizzatrice professionale. Che, lo dico per i profani, sono delle robe usate essenzialmente in fisica per gli esperimenti, oppure dai paranoici :), che hanno dentro un isotopo radioattivo, oppure che misurano la radiazione solare, e che percio' sono "casuali per natura".

^___^
« Ultima modifica: 2009-05-30 22:06:25 da renatoram »

lapo

  • Membro
  • Lapo Luchini
    • Mostra profilo
    • lapo
Il milione di dadi è tratto
« Risposta #2 il: 2009-05-30 22:36:18 »
Citazione
[cite]Autore: renatoram[/cite]La cosa piu' bella e' che... i numeri tirati dai dadi saranno meno casuali di un buon randomizzatore informatico

Già, è un po' triste... ma come dice l'autore stesso tra le righe, l'ha fatto per ricevere meno lamentele ;-)
È che la sfiga esiste, ma la rabbia di perdere fa sembrare l'evento più raro che non quanto sia effettivamente, e quindi dubitare del servizio che ti ha fornito il tiro di dado.

Citazione
[cite]Autore: renatoram[/cite]che hanno dentro un isotopo radioattivo, oppure che misurano la radiazione solare, e che percio' sono "casuali per natura"

In realtà anche il rumore elettronico di una resistenza "calda" è un evento quantistico, non c'è bisogno di scomodare materiali radioattivi per raccogliere un po' di neghentropia; i processori VIA hanno un generatore hardware molto rapido che utilizza le instabilità di oscillatori non bloccati in frequenza.
Ma anche senza hardware dedicato, si possono tirare fuori svariati bit al secondo semplicemente ascoltando un po' di interrupt e controllando un contatore molto rapido (di solito, l'RDTSC del processore); è così che fanno i Sistemi Operativi Seri a fornire Numeri Casuali Seri nel loro periferiche /dev/random; chiaramente tutte queste sono fonti di (negh)entropia piuttosto scarse e mal tarate, ma architetture come Yarrow (o il più recente Fortuna) sono pensate proprio per "concentrare" la casualità di queste fonti ed estrarne distribuiti in modo uniforme (se invece servono numeri distribuiti secondo altre distribuzioni, ad esempio la normale, ci sono trucchetti matematici per ottenerli a partire da numeri casuali distribuiti in modo uniforme).

Altra "aggravante" della (spettacolare) inutilità di quell'oggetto è il fatto che per un server di gioco online non è necessario che i numeri siano realmente casuali, è sufficiente che siano indistinguibili da questi (e quindi imprevedibili e ben distribuiti); in pratica moltissimi generatori pseudo-casuali andrebbero più che bene bene, a patto che gli utenti non ne conoscano il seed (beh chiaramente sto parlando di PRNG buoni, come ad esempio il Mersenne Twister, non robaccia come la rand() delle librerie di sistema della maggior parte dei linguaggi). Idem per le simulazioni fisiche di tipo Monte-Carlo, un generatore pseudo-casuale con buone caratteristiche matematiche (come il Mersenne Twister, per esempio) è spesso da preferirsi a un generatore "vero" per almeno due motivi: è molto molto molto più veloce (il M.T. è 4 volte più veloce della rand() standard del C, nonostante gli sia infinitamente migliore) e permette di avere esperimenti riproducibili (il che non vuol dire che devi farli sempre con lo stesso seed, anzi è bene ripeterli parecchie volte con seed diversi; ma magari è bene tenerseli da parte, in modo da poterci tornare in seguito, in caso di dubbi, senza dover immagazzinare tutti i numeri generati ma soltanto il seed).
« Ultima modifica: 2009-05-30 22:42:21 da lapo »

Mauro

  • Membro
    • Mostra profilo
Il milione di dadi è tratto
« Risposta #3 il: 2009-05-30 22:41:20 »
Citazione
[cite]Autore: lapo[/cite]chiedere a me qualche consiglio

Se fai una spiegazione base, non mi offendo :)

Citazione
[cite]Autore: renatoram[/cite]i numeri tirati dai dadi saranno (per via del "bias" fisico dei dadi, che molto difficilmente saranno "true") meno casuali di un buon randomizzatore informatico, ed ESTREMAMENTE meno casuali di quelli estratti con una scheda randomizzatrice professionale

Perché?
« Ultima modifica: 2009-05-30 22:41:30 da Mauro »

lapo

  • Membro
  • Lapo Luchini
    • Mostra profilo
    • lapo
Il milione di dadi è tratto
« Risposta #4 il: 2009-05-30 22:44:16 »
Citazione
[cite]Autore: Mauro[/cite]Perché?

Perché un generatore casuale informatico viene considerato "uno schifo" se dà risultati lontani dalla "perfetta casualità" anche in modo irrisorio (per esempio: una parte su milione sarebbe già inconcepibile).
Dubito sia mai stato prodotto un dado "di plastica" con caratteristiche simili e, anche se così fosse, il solo prenderlo in mano lo renderebbe comunque più non tale (anche solo per il sudore o il cambiamento della temperatura di un solo lato del dado, per dire).
« Ultima modifica: 2009-05-30 22:52:53 da lapo »

lapo

  • Membro
  • Lapo Luchini
    • Mostra profilo
    • lapo
Il milione di dadi è tratto
« Risposta #5 il: 2009-05-30 22:51:30 »
Citazione
[cite]Autore: Mauro[/cite]Se fai una spiegazione base, non mi offendo :)

Alla fine, anche senza scendere nel dettaglio, ci sono alcune regole abbastanza semplici da seguire:
[ulist]
  • se hai la tentazione di usare la rand() del C, o la Math.random() del Javascript, o cose del genere: DESISTI, fanno schifo. Ma proprio schifo, senza salvezza. Rivolgiti a Mersenne Twister o qualcosa del genere
  • sei stai usando Java, usa la classe SecureRandom e non Random
  • se ti servono numeri casuali per applicazioni crittografiche (o in cui comunque ne va della sicurezza di qualcosa) utilizza generatori CSRNG (Cryptographically Strong Random Number Generator) ben provati come i suddetti Yarrow o Fortuna e dagli in pasto buoni eventi casuali (questo se sei il kernel; se sei un programma utente e non hai enormi pretese, leggi da /dev/random e sii felice che il tuo kernel si sta facendo lo sbattimento al posto tuo)
  • se non te ne intendi, chiedi a qualcuno che se ne intende di dare un'occhiata al tuo prodotto prima di utilizzarlo o pubblicarlo
  • [/ulist]

Mauro

  • Membro
    • Mostra profilo
Il milione di dadi è tratto
« Risposta #6 il: 2009-05-30 22:56:02 »
Citazione
[cite]Autore: lapo[/cite](negh)entropia

Cosa intendi?

Citazione
[cite]Autore: lapo[/cite]Dubito sia mai stato prodotto un dado "di plastica" con caratteristiche simili e, anche se così fosse, il solo prenderlo in mano lo renderebbe comunque più non tale (anche solo per il sudore o il cambiamento della temperatura di un solo lato del dado, per dire)

Ma perché in sé sarebbe cosí poco casuale?

lapo

  • Membro
  • Lapo Luchini
    • Mostra profilo
    • lapo
Il milione di dadi è tratto
« Risposta #7 il: 2009-05-30 23:07:02 »
Citazione
[cite]Autore: Mauro[/cite]Ma perché in sé sarebbe cosí poco casuale?

Non è poco casuale: un dado è casuale abbastanza per la maggior parte dei giochi che usano i dadi, anzi probabilmente molto di più.
Il fatto è che gli informatici (e i matematici, e quella risma) sono molto più paranoici e già che ci sono e che tutto sommato "costa poco" pretendono molto molto molto molto di più.
Ora a una persona non interessa per niente sapere se è più probabile morire perché un meteorite devasta la tua città oppure per un fulmine globulare, sono entrambi numeri molto molto molto inferiori a cause più comuni come ad esempio "un pazzo brucia un rosso e ti investe", "avvelenamento da cibo", "mi sono scordato l'antitetanica" però, per capirsi, la differenza tra due probabilità (entrambe bassissime) come quelle due è la differenza per cui un fissato di numeri casuali si scandalizzerebbe.
Per esempio, Mersenne Twister è pensato per non mostrare tendenze di alcun tipo anche se utilizzato per simulare miliardi e miliardi di eventi definiti da coordinate in uno spazio 623-dimensionale; la rand() del C, oltre ad avere un ciclo non massimo (quindi inizia a ripetersi ben prima di 2 miliardi di valori), inizia a mostrare grossi trend già se utilizzata per disegnare punti nel piano: questi tenderanno a porsi preferenzialmente su alcune rette e non con uniformità nell'intero piano.

Cosa intendo con neghentropia: l'informazione è il contrario della casualità, è se vuoi ciò che scioglie la casualità; l'informazione si può misurare in bit positivi e la casualità (l'entropia) si misura in bit negativi ma, di solito la si chiama neghentropia (-entropia) e si usano numeri positivi lo stesso.
Per esempio se tu stai attendendo un messaggio composto da una qualsiasi lettera dell'alfabeto (quindi distribuzione uniforme su 26 valori) l'informazione compresa nel messaggio che riceverai (e che "ti toglierà il dubbio") sarà di
[size=12]log2(26) = 4.7 bit[/size]
dato che la probabilità di arrivo di quel messaggio era di
[size=12]log2(1/26) = -4.7 bit[/size]
(sì, i bit possono essere frazionari, dato che le scelte della vita non sempre sono binarie).
« Ultima modifica: 2009-05-30 23:14:52 da lapo »

Mauro

  • Membro
    • Mostra profilo
Il milione di dadi è tratto
« Risposta #8 il: 2009-05-30 23:13:21 »
Citazione
[cite]Autore: lapo[/cite]Non è poco casuale

Rispetto ai numeri che citi sí; quello che chiedevo è perché questa poca casualità.

Citazione
[cite]Autore: lapo[/cite]Per esempio se tu stai attendendo un messaggio composto da una qualsiasi lettera dell'alfabeto (quindi distribuzione uniforme su 26 valori) l'informazione compresa nel messaggio che riceverai (e che "ti toglierà il dubbio") sarà di log2(1/26) = -4.7 bit (sì, i bit possono essere frazionari, dato che le scelte della vita non sempre sono binarie)

Ti credo sulla parola :P
Se misura l'informazione, che è misurata in bit positivi, perché è negativo?

lapo

  • Membro
  • Lapo Luchini
    • Mostra profilo
    • lapo
Il milione di dadi è tratto
« Risposta #9 il: 2009-05-30 23:20:36 »
Citazione
[cite]Autore: Mauro[/cite]quello che chiedevo è perché questa poca casualità.

Beh, perché non è perfettamente simmetrico come forma esterna, non è composto di plastica con una densità perfettamente ben distribuita... anzi, se vuoi, già il fatto che le facce abbiano dei buchi in numero diverso incide notevolmente sulla loro probabilità di uscire, dato che pesano in modo diverso.
Una macchina da 1300000 tiri al giorno, in effetti, sarebbe un ottimo strumento di ricerca per quantificare questa imprecisione intrinseca, come fa notare il crittografo Schneier sul suo blog (in effetti quella macchina l'ho conosciuta a partire da quel post).

Citazione
[cite]Autore: Mauro[/cite]Se misura l'informazione, che è misurata in bit positivi, perché è negativo?

Dipende se consideri l'informazione che ti dà o l'entropia che ti toglie, comunque poi avevo editato il messaggio per chiarezza.
Nella pratica, si usano sempre numeri positivi e si capisce il senso dal contesto.

Normalmente in crittografia si considera "sicuro" qualcosa con almeno 80 bit di entropia (ma meglio 128, oggi come oggi).
2^80 circa uguale a 10^24... ecco i "numeroni" di cui parlavo, probabilità nell'ordine di 1 su 10^24...

lapo

  • Membro
  • Lapo Luchini
    • Mostra profilo
    • lapo
Il milione di dadi è tratto
« Risposta #10 il: 2009-05-30 23:24:35 »
Nota: dopo che ti abitui a utilizzare un algoritmo crittografico "da 128 bit" anziché uno da 56 bit e inizi a considerare il secondo "scandalosamente debole"... beh, è meglio se NON CALCOLI la tua probabilità di morte improvvisa in bit... ci rimarresti male.
Le scale logaritmiche sanno essere sempre molto bastarde, rendono "visibili" contemporaneamente cose che per nostra esperienza diretta sarebbero in due universi diversi; carine, in argomento scale logaritmiche, le vignette Height e Depth di XKCD.

Moreno Roncucci

  • Big Model Watch
  • Membro
  • *****
    • Mostra profilo
Il milione di dadi è tratto
« Risposta #11 il: 2009-05-30 23:24:44 »
I dadi "economici" notoriamente sono ben poco equilibrati nei risultati: ben difficilmente la stessa quantità di materiale viene asportata da ogni spigolo quando vengono arrotondati  (in particolare pare che i dadi da 10 e da 20 siano i peggiori da questo punto di vista). Ad aver voglia e tempo si potrebbe tirare un dado in maniera meccanica per migliaia di volte e vedere quali sono i numeri più probabili, ma la cosa ha ben poco senso per scopi pratici.

Però pare che a diverse GenCon Lou Zocchi abbia fatto vere e proprie conferenze/dimostrazioni sul perché i suoi dadi siano "più random" di quelli della concorrenza, sarebbe interessante se ci fosse una registrazione filmata in rete...  :-)
"Big Model Watch" del Forum (Leggi il  Regolamento) - Vendo un sacco di gdr, fumetti, libri, e altro. L'elenco lo trovi qui

lapo

  • Membro
  • Lapo Luchini
    • Mostra profilo
    • lapo
Il milione di dadi è tratto
« Risposta #12 il: 2009-05-30 23:34:55 »
Citazione
[cite]Autore: Moreno Roncucci[/cite]vere e proprie conferenze/dimostrazioni sul perché i suoi dadi siano "più random" di quelli della concorrenza

A quanto dice Wikipedia è perché non hanno gli spigoli arrotondati ma sono a punta.

Mauro

  • Membro
    • Mostra profilo
Il milione di dadi è tratto
« Risposta #13 il: 2009-05-30 23:52:51 »
Citazione
[cite]Autore: lapo[/cite]dato che la probabilità di arrivo di quel messaggio era di
[span style=font-size: 12pt;]log2(1/26) = -4.7 bit[/span]

Una probabilità di arrivo negativa cosa vuol dire? Con "arrivi" intendi "arrivi non corrotto"? Mi viene il dubbio perché per quanto hai scritto l'ampiezza del campo da cui selezioni la lettera determina la probabilità che il messaggio arrivi...

Citazione
[cite]Autore: lapo[/cite]dopo che ti abitui a utilizzare un algoritmo crittografico "da 128 bit" anziché uno da 56 bit e inizi a considerare il secondo "scandalosamente debole"... beh, è meglio se NON CALCOLI la tua probabilità di morte improvvisa in bit... ci rimarresti male

Dai, fammi male, dammi un esempio :P

Renato Ramonda

  • Membro
  • Renato Ramonda, faccia di Janus
    • Mostra profilo
Il milione di dadi è tratto
« Risposta #14 il: 2009-05-30 23:59:04 »
Infatti anche la Chessex vende anche set di dadi affilatissimi e senza colore nei numeri (per minimizzare le differenze di peso) proposti come "dadi veramente random" o qualcosa del genere... resta il fatto che sono costosi, bruttini (gusto personale), pungono come dei bastardi... e dopo un po' di tiri visto che non sono di titanio si consumeranno, e che fai... ne compri altri?

Tags: