Ricerca…


Sintassi

  • Casuale()

  • Casuale (int Seed)

  • int Successivo ()

  • int Next (int maxValue)

  • int Successivo (int minValue, int maxValue)

Parametri

parametri Dettagli
seme Un valore per la generazione di numeri casuali. Se non impostato, il valore predefinito è determinato dall'ora corrente del sistema.
minValue I numeri generati non saranno più piccoli di questo valore. Se non impostato, il valore predefinito è 0.
maxValue I numeri generati saranno più piccoli di questo valore. Se non impostato, il valore predefinito è Int32.MaxValue .
valore di ritorno Restituisce un numero con valore casuale.

Osservazioni

Il seme casuale generato dal sistema non è lo stesso in ogni altra corsa.

I semi generati nello stesso tempo potrebbero essere uguali.

Genera un int casuale

Questo esempio genera valori casuali tra 0 e 2147483647.

Random rnd = new Random();
int randomNumber = rnd.Next();

Genera un doppio casuale

Genera un numero casuale compreso tra 0 e 1.0. (escluso 1.0)

Random rnd = new Random();
var randomDouble = rnd.NextDouble();

Genera un int random in un dato range

Genera un numero casuale tra minValue e maxValue - 1 .

Random rnd = new Random();
var randomBetween10And20 = rnd.Next(10, 20);

Generazione della stessa sequenza di numeri casuali più e più volte

Quando si creano istanze Random con lo stesso seme, verranno generati gli stessi numeri.

int seed = 5;
for (int i = 0; i < 2; i++)
{
   Console.WriteLine("Random instance " + i);
   Random rnd = new Random(seed);
   for (int j = 0; j < 5; j++)
   {
      Console.Write(rnd.Next());
      Console.Write(" ");
   }

   Console.WriteLine();
}

Produzione:

Random instance 0
726643700 610783965 564707973 1342984399 995276750
Random instance 1
726643700 610783965 564707973 1342984399 995276750

Crea più classi casuali con semi diversi contemporaneamente

Due classi casuali create contemporaneamente avranno lo stesso valore di inizializzazione.

Usando System.Guid.NewGuid().GetHashCode() può ottenere un seed diverso anche nello stesso tempo.

Random rnd1 = new Random();
Random rnd2 = new Random();
Console.WriteLine("First 5 random number in rnd1");
for (int i = 0; i < 5; i++)
    Console.WriteLine(rnd1.Next());

Console.WriteLine("First 5 random number in rnd2");
for (int i = 0; i < 5; i++)
    Console.WriteLine(rnd2.Next());

rnd1 = new Random(Guid.NewGuid().GetHashCode());
rnd2 = new Random(Guid.NewGuid().GetHashCode());
Console.WriteLine("First 5 random number in rnd1 using Guid");
for (int i = 0; i < 5; i++)
    Console.WriteLine(rnd1.Next());
Console.WriteLine("First 5 random number in rnd2 using Guid");
for (int i = 0; i < 5; i++)
    Console.WriteLine(rnd2.Next());

Un altro modo per ottenere semi diversi è usare un'altra istanza Random per recuperare i valori seme.

Random rndSeeds = new Random();
Random rnd1 = new Random(rndSeeds.Next());
Random rnd2 = new Random(rndSeeds.Next());

Ciò consente inoltre di controllare il risultato di tutte le istanze Random impostando solo il valore di rndSeeds per rndSeeds . Tutte le altre istanze saranno derivate deterministicamente dal valore di seme singolo.

Genera un personaggio casuale

Generare una lettera casuale tra a e z usando il sovraccarico Next() per un dato intervallo di numeri, quindi convertire l' int risultante in un char

Random rnd = new Random();
char randomChar = (char)rnd.Next('a','z'); 
//'a' and 'z' are interpreted as ints for parameters for Next()

Genera un numero che è una percentuale di un valore massimo

Un bisogno comune di numeri casuali per generare un numero che è X% di qualche valore massimo. questo può essere fatto trattando il risultato di NextDouble() come percentuale:

var rnd = new Random();
var maxValue = 5000;
var percentage = rnd.NextDouble();
var result = maxValue * percentage; 
//suppose NextDouble() returns .65, result will hold 65% of 5000: 3250.


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow