Booleano aleatorio en C#

Harshit Jindal 12 octubre 2023
  1. Utilizar el método Next() de la clase Random de C#
  2. Utilice el método NextDouble() de la clase Random de C#
Booleano aleatorio en C#

¿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 avatar Harshit Jindal avatar

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

Artículo relacionado - Csharp Random

Artículo relacionado - Csharp Boolean