Eventuali duplicati:
Why does it appear that my random number generator isn't random in C#?
How can I generate truly (not pseudo) random numbers with C#?Creazione di un vero e proprio caso
ho creato un gioco di dadi in cui i dadi si basa su un percentile, 1-100.
public static void Roll()
{
Random rand = new Random((int)DateTime.Now.Ticks);
return rand.Next(1, 100);
}
Ma non mi sembra un vero casuale basato sul tempo corrente.
Se faccio
for (int i = 0; i < 5; i++)
{
Console.WriteLine("#" + i + " " + Roll());
}
sarebbero tutti gli stessi valori, perché la DateTime.Now.Ticks
non è cambiata, è seminato lo stesso numero.
Stavo pensando che potrebbe generare un nuovo seme casuale se il seme è stato lo stesso a causa del tempo corrente, ma non si sente come un onesto "ri-roll"
Cosa devo fare per cercare e replicare un tiro di dadi vicino al vero/onesto? Dovrei usare la classe RNGCryptoServiceProvider
per generare rotoli, invece?
Suggerisco di leggere questo: http://csharpindepth.com/Articles/Chapter12/Random.aspx – Oded
ci sono molte varianti di questa domanda su SO. Ecco uno di questi ... [Perché sembra che il mio generatore di numeri casuali non sia casuale in C#?] (Http://stackoverflow.com/questions/932520/why-does-it-appear-that-my- random-number-generator-isnt-random-in-c) ... Contrassegna come duplicato. (Dovresti avere una sola istanza statica del tuo Random piuttosto che un nuovo Random per ogni Roll) – spender
cos'è "true random"? – Sandy