Buscar..


Sintaxis

  • Aleatorio()

  • Aleatorio (int Seed)

  • int siguiente ()

  • int Next (int maxValue)

  • int Next (int minValue, int maxValue)

Parámetros

Parámetros Detalles
Semilla Un valor para generar números aleatorios. Si no se establece, el valor predeterminado está determinado por la hora actual del sistema.
minValue Los números generados no serán más pequeños que este valor. Si no se establece, el valor predeterminado es 0.
valor máximo Los números generados serán más pequeños que este valor. Si no se establece, el valor predeterminado es Int32.MaxValue .
valor de retorno Devuelve un número con valor aleatorio.

Observaciones

La semilla aleatoria generada por el sistema no es la misma en cada ejecución diferente.

Las semillas generadas al mismo tiempo pueden ser las mismas.

Generar un int al azar

Este ejemplo genera valores aleatorios entre 0 y 2147483647.

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

Generar un doble aleatorio

Genera un número aleatorio entre 0 y 1.0. (sin incluir 1.0)

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

Generar un int aleatorio en un rango dado

Genere un número aleatorio entre minValue y maxValue - 1 .

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

Generando la misma secuencia de números aleatorios una y otra vez

Al crear instancias Random con la misma semilla, se generarán los mismos números.

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();
}

Salida:

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

Crea múltiples clases aleatorias con diferentes semillas simultáneamente.

Dos clases aleatorias creadas al mismo tiempo tendrán el mismo valor semilla.

Usando System.Guid.NewGuid().GetHashCode() puede obtener una semilla diferente incluso al mismo tiempo.

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());

Otra forma de lograr diferentes semillas es usar otra instancia Random para recuperar los valores de semillas.

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

Esto también hace posible controlar el resultado de todas las instancias Random al establecer solo el valor semilla para rndSeeds . Todas las demás instancias se derivarán determinísticamente de ese único valor semilla.

Generar un carácter aleatorio.

Genere una letra aleatoria entre a y z usando la sobrecarga Next() para un rango de números dado, luego convierta el int resultante en un char

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

Generar un número que sea un porcentaje de un valor máximo

Una necesidad común de números aleatorios es generar un número que sea X% de algún valor máximo. Esto se puede hacer tratando el resultado de NextDouble() como un porcentaje:

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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow