b"\n_START_ARTICLE_\nNumeri pseudo-casuali\n_START_PARAGRAPH_\nSono detti numeri pseudo-casuali (in inglese pseudo-random numbers) i numeri generati da un algoritmo deterministico che produce una sequenza con, approssimativamente, le stesse propriet\xc3\xa0 statistiche di una sequenza di numeri generata da un processo casuale. Tale algoritmo \xc3\xa8 detto generatore di numeri pseudo-casuali (PRNG, dall'inglese pseudo-random number generator)._NEWLINE_Le sequenze di numeri pseudo-casuali vengono solitamente generate da un computer e utilizzate per algoritmi basati su processi casuali, come i metodi di tipo Monte Carlo o le applicazioni di crittografia. Quando invece occorrono sequenze di numeri realmente casuali, si utilizza un generatore hardware di numeri casuali.\n_START_SECTION_\nEsempio\n_START_PARAGRAPH_\nLa seguente funzione genera una sequenza pseudo-casuale a 16 bit._NEWLINE_ 1 uint random;  // Variabile globale in cui \xc3\xa8 memorizzato il numero casuale (16bit) 2 void randomNext(void) { 3   // Aggiorna sequenza random 4   // Algoritmo Polinomiale: 5   // +> b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 b10 b11 b12 b13 b14 b15 6   // |     |  |     |                                     | 7   // ------+--+-----+-------------------------------------+ 8   // carry = b1^b2^b4^b15 9   // Pn+1=(Pn<<1)|carry10   uchar randomtmp;  // Accumulo le operazioni ex-OR11   if (random==0) random++;  // N.B. : il seed dovrebbe essere != 012   randomtmp=0;13   if ((uchar)random&0x02) randomtmp=1;14   if ((uchar)random&0x04) randomtmp^=1;15   if ((uchar)random&0x10) randomtmp^=1;16   if (random&0x8000) randomtmp^=1;17   random<<=1;18   (uchar)random|=randomtmp;19 }"