{"id":1463,"date":"2005-08-26T00:00:00","date_gmt":"2005-08-25T22:00:00","guid":{"rendered":""},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T22:00:00","slug":"1463","status":"publish","type":"post","link":"https:\/\/www.vialattea.net\/content\/1463\/","title":{"rendered":"Vorrei sapere come si definiscono i numeri casuali in informatica. Vi sono varie definizioni? E che legame c&#8217;\u00e8 tra numeri casuali e teorema di G&ouml;del? Grazie e complimenti per questo sito stupendo."},"content":{"rendered":"<p> La generazione di numeri casuali \u00e8 tra le classi di problemi cosiddetti &#8220;notevoli&#8221;, nella teoria dei numeri: ottenere infatti una sequenza di numeri<br \/>\ncasuali \u00e8 di cruciale importanza nelle simulazioni di comportamento di<br \/>\nsistemi regolati da variabili aleatorie. <\/p>\n<p> Verso la fine degli anni `20 sono state stilate diverse tavole di numeri<br \/>\ncasuali, ma bisogna attendere la fine della seconda guerra mondiale per<br \/>\navere il primo tentativo di approccio algoritmico, dovuto a  John Von Neumann,<br \/>\nimportantissima figura di scienziato a cui oggi dobbiamo un considerevole<br \/>\nnumero di lavori, tra cui la <i>teoria dei giochi<\/i>, la formalizzazione<br \/>\nmatematica dei processi di <i>meccanica quantistica<\/i>\u00b8 la partecipazione<br \/>\nal <i>Progetto Manhattan<\/i>, diversi ed importantissimi risultati sulla<br \/>\n<i>teoria della commutabilit\u00e0<\/i>.<\/p>\n<p> L`algoritmo di Von Neumann, detto <i>middle-square<\/i>  \u00e8 estremamente<br \/>\nsemplice: si prende un valore iniziale, detto <i>seme<\/i> dell`algoritmo<br \/>\ndi generazione, lo si eleva al quadrato e si estrae la porzione centrale<br \/>\ndel numero cos\u00ec ottenuto.<\/p>\n<p> Ad esempio, per generare una serie di numeri casuali a due cifre, partendo<br \/>\ndal seme 64, si ottiene:<\/p>\n<p> 64<sup>2<\/sup>=4096, da cui si estrae la parte centrale (con ugual numero di<br \/>\ncifre del seme), per cui il prossimo numero casuale \u00e8 9, il processo si<br \/>\nripete ottenendo la serie: 81, 56, 13, 6, 36 \u2026.<\/p>\n<p> Algoritmi di questo tipo vengono detti <i>Generatori di numeri pseudocasuali<\/i>.<\/p>\n<p> Si dimostra che la successione pseudocasuale cos\u00ec ottenuta, dopo un<br \/>\ncerto numero di iterazioni, si ripete. La bont\u00e0 di algoritmi di questo<br \/>\ntipo sta proprio nel <i>periodo di ricorrenza<\/i> dei numeri casuali cos\u00ec<br \/>\nottenuti. Maggiore \u00e8 il periodo, migliore \u00e8 l`algoritmo utilizzato.<\/p>\n<p> Esistono tuttavia dei valori di seme per cui il periodo di ricorrenza<br \/>\n\u00e8 minimo, come ad esempio il valore 0, che restituisce tutti 0 usando il<br \/>\nmetodo <i>middle-square<\/i>.<\/p>\n<p> Un buon generatore pseudo-casuale \u00e8 il cosiddetto <i>Generatore Lineare<br \/>\nCongruente<\/i>, sempre di tipo iterativo, che si basa su due semi <i>a<\/i><br \/>\ne <i>b<\/i> ed un modulo <i>m<\/i>.<\/p>\n<p> L`equazione alle ricorrenze che descrive il GLC \u00e8:<br \/><br type=\"_moz\"\/> <\/p>\n<div style=\"text-align: center;\"> <font size=\"4\"><i>X<sub>n+1<\/sub>=(aX<sub>n<\/sub>+b) mod m<\/i><\/font><\/div>\n<p>L`espressione <i>mod<\/i><i> m<\/i> sta ad indicare che il generatore<br \/>\nrestituisce valori interi compresi tra <i>0<\/i> ed <i>m<\/i>.<\/p>\n<p> Ad esempio, per <i>a=18, b=22, m=99<\/i> il GLC restituisce la sequenza:<br type=\"_moz\"\/><\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"64\" valign=\"bottom\" nowrap=\"\"> iteraz.<\/td>\n<td width=\"64\" valign=\"bottom\" nowrap=\"\"> Valore <\/td>\n<\/tr>\n<tr>\n<td width=\"64\" valign=\"bottom\" nowrap=\"\"> 1 <\/td>\n<td width=\"64\" valign=\"bottom\" nowrap=\"\"> 40 <\/td>\n<\/tr>\n<tr>\n<td width=\"64\" valign=\"bottom\" nowrap=\"\"> 2 <\/td>\n<td width=\"64\" valign=\"bottom\" nowrap=\"\"> 49 <\/td>\n<\/tr>\n<tr>\n<td width=\"64\" valign=\"bottom\" nowrap=\"\"> 3 <\/td>\n<td width=\"64\" valign=\"bottom\" nowrap=\"\"> 13 <\/td>\n<\/tr>\n<tr>\n<td width=\"64\" valign=\"bottom\" nowrap=\"\"> 4 <\/td>\n<td width=\"64\" valign=\"bottom\" nowrap=\"\"> 58 <\/td>\n<\/tr>\n<tr>\n<td width=\"64\" valign=\"bottom\" nowrap=\"\"> 5 <\/td>\n<td width=\"64\" valign=\"bottom\" nowrap=\"\"> 76 <\/td>\n<\/tr>\n<tr>\n<td width=\"64\" valign=\"bottom\" nowrap=\"\"> 6 <\/td>\n<td width=\"64\" valign=\"bottom\" nowrap=\"\"> 4 <\/td>\n<\/tr>\n<tr>\n<td width=\"64\" valign=\"bottom\" nowrap=\"\"> 7 <\/td>\n<td width=\"64\" valign=\"bottom\" nowrap=\"\"> 94 <\/td>\n<\/tr>\n<tr>\n<td width=\"64\" valign=\"bottom\" nowrap=\"\"> 8 <\/td>\n<td width=\"64\" valign=\"bottom\" nowrap=\"\"> 31 <\/td>\n<\/tr>\n<tr>\n<td width=\"64\" valign=\"bottom\" nowrap=\"\"> 9 <\/td>\n<td width=\"64\" valign=\"bottom\" nowrap=\"\"> 85 <\/td>\n<\/tr>\n<tr>\n<td width=\"64\" valign=\"bottom\" nowrap=\"\"> 10 <\/td>\n<td width=\"64\" valign=\"bottom\" nowrap=\"\"> 67 <\/td>\n<\/tr>\n<tr>\n<td width=\"64\" valign=\"bottom\" nowrap=\"\"> 11 <\/td>\n<td width=\"64\" valign=\"bottom\" nowrap=\"\"> 40 <\/td>\n<\/tr>\n<tr>\n<td width=\"64\" valign=\"bottom\" nowrap=\"\"> 12 <\/td>\n<td width=\"64\" valign=\"bottom\" nowrap=\"\"> 49 <\/td>\n<\/tr>\n<tr>\n<td width=\"64\" valign=\"bottom\" nowrap=\"\"> 13 <\/td>\n<td width=\"64\" valign=\"bottom\" nowrap=\"\"> 13 <\/td>\n<\/tr>\n<tr>\n<td width=\"64\" valign=\"bottom\" nowrap=\"\"> 14 <\/td>\n<td width=\"64\" valign=\"bottom\" nowrap=\"\"> 58 <\/td>\n<\/tr>\n<tr>\n<td width=\"64\" valign=\"bottom\" nowrap=\"\"> 15 <\/td>\n<td width=\"64\" valign=\"bottom\" nowrap=\"\"> 76 <\/td>\n<\/tr>\n<tr>\n<td width=\"64\" valign=\"bottom\" nowrap=\"\"> 16 <\/td>\n<td width=\"64\" valign=\"bottom\" nowrap=\"\"> 4 <\/td>\n<\/tr>\n<tr>\n<td width=\"64\" valign=\"bottom\" nowrap=\"\"> 17 <\/td>\n<td width=\"64\" valign=\"bottom\" nowrap=\"\"> 94 <\/td>\n<\/tr>\n<tr>\n<td width=\"64\" valign=\"bottom\" nowrap=\"\"> 18 <\/td>\n<td width=\"64\" valign=\"bottom\" nowrap=\"\"> 31 <\/td>\n<\/tr>\n<tr>\n<td width=\"64\" valign=\"bottom\" nowrap=\"\"> 19 <\/td>\n<td width=\"64\" valign=\"bottom\" nowrap=\"\"> 85 <\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><\/p>\n<p> Come si osserva, con questi valori specifici di seme, il generatore<br \/>\nripete la sequenza solamente ogni dieci iterazioni.<\/p>\n<p> Si dimostra che un metodo efficace di scelta dei valori di seme \u00e8 di<br \/>\nutilizzare potenze di 2 anche se questo accorgimento non mette al riparo<br \/>\ndal fenomeno del ripetersi dei numeri casuali. <\/p>\n<\/p>\n<p> Uno dei principali risultati di G\u00f6del \u00e8 stato il dimostrare che il<br \/>\nnumero di programmi scrivibili \u00e8 <i>enumerabile<\/i>, ovvero \u00e8 di ordine<br \/>\ndi infinito pari all`insieme degli interi. Da qui ci\u00f2 prova l`attuablit\u00e0<br \/>\ndel cosiddetto <i>processo di G\u00f6delizzazione,<\/i> ovvero di assegnazione<br \/>\ndi un numero intero che rappresenti univocamente il programma scritto,<br \/>\novvero: per ogni programma di computer  (in qualsiasi linguaggio) esiste<br \/>\nun numero naturale intero <i>n<\/i> che vi corrisponde. Tale rappresentazione<br \/>\n\u00e8 talmente univoca, che <i>n<\/i> pu\u00f2 essere associato alla <i>semantica<br \/>\n<\/i>del programma scritto (ovvero ne pu\u00f2 descrivere completamente il significato).<\/p>\n<p>Si immagini di avere un programma di computer avente:<\/p>\n<ul>\n<li> <i>n<\/i><i>:<\/i> il numero di G\u00f6del del programma<\/li>\n<li> <i>x<\/i>: il valore ottenuto in output dal programma<\/li>\n<li> <i>y<sub>1<\/sub><\/i><i>,\u2026,y<sub>m<\/sub>: <\/i>variabili di programma<\/li>\n<\/ul>\n<p> e si costruisca un polinomio <i>P(n, x, y<sub>1<\/sub>,\u2026,y<sub>m<\/sub>)<\/i>,<br \/>\nin modo che questi valga 0 se e solo se il programma di semantica <i>n<\/i><br \/>\nrestituisce il valore <i>x<\/i> usando le variabili <i>y<sub>1<\/sub>,\u2026,y<sub>m<\/sub>.<\/i><\/p>\n<p> Ci si ponga adesso la questione: \u00e8 possibile ottenere il numero di<br \/>\nG\u00f6del di un programma come risultato del programma stesso? Ovvero, cosa<br \/>\naccade quando <i>x=n<\/i> ?<\/p>\n<p> Si dimostra, che non esiste alcun algoritmo e quindi programma di<br \/>\ncomputer, che decida se l`equazione <i>P(n, n, y<sub>1<\/sub>,\u2026,y<sub>m<\/sub>)=0<\/i><br \/>\nha una soluzione. Questo fatto \u00e8 una rappresentazione alternativa del teorema<br \/>\ndi Godel: dire che non esiste alcun algoritmo che computi la decidibilit\u00e0<br \/>\ndell`equazione implica che non esiste alcun sistema assiomatico per determinare<br \/>\nla stessa cosa.<\/p>\n<p> Si badi bene: non esiste un algoritmo in grado di determinare se l`equazione<br \/>\n\u00e8 risolvibile <i>per n qualsiasi<\/i>. Al variare di <i>n<\/i>, quindi, il<br \/>\nfatto che l`equazione ha una soluzione o meno \u00e8, quindi completamente casuale<br \/>\ne richiede la scrittura di un programma specifico per determinare se l`equazione<br \/>\nha una soluzione (abbiamo visto che non ne esiste, infatti, uno generico).<\/p>\n<p> Si supponga quindi che tali programmi restituiscano 0 o uno a seconda<br \/>\ndella risolvibilit\u00e0 dell`equazione <i>P(n, n, y<sub>1<\/sub>,\u2026,y<sub>m<\/sub>)=0<\/i>:<br \/>\nla sequenza di 0 e 1 \u00e8 completamente casuale, ovvero sono caratterizzati<br \/>\nda una variabile aleatoria analoga a quella che caratterizza il lancio<br \/>\ndi una moneta.<\/p>\n<p><br type=\"_moz\"\/><\/p>\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>[&#8230;]<\/p>\n","protected":false},"author":180,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[60],"tags":[],"class_list":["post-1463","post","type-post","status-publish","format-standard","hentry","category-domande-varie-informatica-e-telecomunicazioni"],"_links":{"self":[{"href":"https:\/\/www.vialattea.net\/content\/wp-json\/wp\/v2\/posts\/1463","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.vialattea.net\/content\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.vialattea.net\/content\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.vialattea.net\/content\/wp-json\/wp\/v2\/users\/180"}],"replies":[{"embeddable":true,"href":"https:\/\/www.vialattea.net\/content\/wp-json\/wp\/v2\/comments?post=1463"}],"version-history":[{"count":0,"href":"https:\/\/www.vialattea.net\/content\/wp-json\/wp\/v2\/posts\/1463\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.vialattea.net\/content\/wp-json\/wp\/v2\/media?parent=1463"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.vialattea.net\/content\/wp-json\/wp\/v2\/categories?post=1463"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.vialattea.net\/content\/wp-json\/wp\/v2\/tags?post=1463"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}