I want to know how Random number generator(RNG) works in any PL(Programming language).
Le lingue tendono ad avere le proprie implementazioni di generatori di numeri pseudo-casuali, quindi non puoi sapere come un generatore di numeri pseudo-casuali funziona in qualsiasi linguaggio di programmazione. Inoltre, non c'è molto valore che potremmo aggiungere qui oltre a indirizzarti all'articolo pertinente su Wikipedia.
L'approccio più semplice, tuttavia, che produce risultati abbastanza buoni ed è molto veloce, è quello di tenere traccia dell'ultimo intero emesso, e ogni volta che viene richiesto un intero pseudo-casuale, incrementarlo di uno e quindi moltiplicarlo per un'enorme costante prima di restituirla. Questa moltiplicazione di solito provoca un overflow sostanziale, che viene ignorato. L'effetto è che il modello di bit risultante è casuale per tutti gli scopi pratici. L'incremento di uno è necessario per garantire che se il numero raggiunge mai lo zero, le successive moltiplicazioni non continueranno a produrre zero.
I know the random methods has short periods. i.e they start repeating the values after specific number of time.
Non so come hai avuto l'impressione che i numeri pseudo-casuali abbiano periodi brevi, perché semplicemente non è vero. Generatori di numeri pseudo casuali tendono ad avere periodi enormi.
Seeds are used to initialise the random numbers generated by the RNG. IF any PL uses its own SEEDS, how specifying my seed will make any difference.
Un generatore di numeri pseudo casuali userà il proprio seme solo se non si specifica il proprio seme. Se specifichi il tuo seed, il generatore di numeri pseudo-casuali userà il tuo seed.
I heard people saying that specifying the seed help in better control over the sequence Generated. I don't understand it as a whole. Could any one please help. with the same,
Provalo a casa:
Scrivi un programma che disegna un cielo stellato e poi lo cancella, usando solo GetPixel()
e SetPixel()
.
Quindi, quello che devi fare è scrivere un ciclo che generi, per esempio, 1000 coppie di coordinate pseudo-casuali e inverta ogni pixel a quelle coordinate. Se il pixel era nero, lo rende bianco. Se era bianco, lo rende nero. Se lo schermo era inizialmente tutto nero, dovrebbero apparire circa 1000 stelle bianche.
Ora, per cancellare le stelle, è possibile cancellare l'intero schermo, ma c'è un modo più interessante per farlo.
Inizializza il tuo generatore di numeri pseudo-casuali con lo stesso seme identico, quindi riapplica il ciclo precedente. Viene generata la stessa identica sequenza di numeri pseudo-casuali, quindi verrà visitato lo stesso set di coordinate, quindi ogni di questi pixel verrà nuovamente invertito, restituendo nuovamente un cielo nero.