Booleano aleatorio en C#
-
Utilizar el método
Next()
de la claseRandom
deC#
-
Utilice el método
NextDouble()
de la claseRandom
deC#
¿Te has encontrado con una situación en la que tienes que lanzar una moneda mediante programación? ¿Alguna vez ha querido distribuir cosas entre dos bases de datos al azar?
Lo que está tratando de lograr es lo que llamamos un booleano aleatorio
. Una variable booleana
tiene sólo dos valores posibles, true
o false
.
Cuando generamos aleatoriamente este booleano, obtenemos un booleano aleatorio. Este tutorial mostrará cómo crear un booleano aleatorio
usando C#.
También veremos la forma más rápida e idónea de generarlo.
Utilizar el método Next()
de la clase Random
de C#
La clase Random
en C# nos proporciona un arsenal de aleatoriedad. Proporciona un generador pseudoaleatorio que puede producir una secuencia aleatoria basada en requisitos estadísticos.
Aunque la clase explícitamente no proporciona un método para booleanos como lo hace para bytes
, integers
, y dobles
. Pero puede utilizarlo eficientemente para generarlos ya que false
y true
no son más que 0
y 1
desde la perspectiva de los programadores.
La primera forma es usar el método Next()
para generar enteros aleatorios en el rango [0,n)
asignando n
como 2
y reduciendo la capacidad para constituir solo 0
y 1
.
// Generate n random booleans using C# class Random
using System;
public class RandomBoolean {
public static void Main() {
int n = 5;
var random = new Random();
for (int i = 0; i < n; i++) {
Console.WriteLine(random.Next(2) == 1);
}
}
}
Producción :
False
True
True
False
False
// Note this is random and may not match with your actual output
Utilice el método NextDouble()
de la clase Random
de C#
Vimos cómo podíamos usar Next()
para generar un booleano aleatorio en el ejemplo anterior. En este enfoque, veremos cómo podemos usar otro método, NextDouble()
de la misma clase, Random
.
El NextDouble()
devuelve un valor doble aleatorio entre 0.0
y 1.0
. Entonces, podemos agregar un separador en cualquier lugar entre estos dos números y dividir los números generados en true
o false
basándonos en una condición de separación.
Por ejemplo, seleccionemos el valor doble 0.3
como separador y la condición de separación como número generado >= 0.3
. Entonces, si el número satisface la condición, obtendremos true
, si no false
.
Para conseguir una distribución suficientemente aleatoria, el valor preferido del separador es 0.5
.
// Generate n random booleans using C# class Random
using System;
public class RandomBoolean {
public static void Main() {
int n = 5;
var random = new Random();
for (int i = 0; i < n; i++) {
Console.WriteLine(random.NextDouble() >= 0.5);
}
}
}
Producción :
True
False
True
True
False
// Note this is random and may not match with your actual output
Ambos métodos descritos en la publicación son razonablemente rápidos.
Pero supongamos que tenemos que elegir el más rápido. En ese caso, el segundo método parece más corto.
El método Next()
devuelve internamente (int)(this.Sample()*maxValue)
en comparación con solo this.Sample()
de NextDouble()
, lo que genera una sobrecarga adicional de multiplicación y conversión.
Harshit Jindal has done his Bachelors in Computer Science Engineering(2021) from DTU. He has always been a problem solver and now turned that into his profession. Currently working at M365 Cloud Security team(Torus) on Cloud Security Services and Datacenter Buildout Automation.
LinkedIn