C# Aléatoire Booléen

Harshit Jindal 12 octobre 2023
  1. Utilisez la méthode Next() de la classe Random
  2. Utilisez la méthode NextDouble() de la classe C# Random
C# Aléatoire Booléen

Avez-vous rencontré une situation où vous devez lancer une pièce par programmation ? Avez-vous déjà voulu répartir les choses entre deux bases de données de manière aléatoire ?

La chose que vous essayez de réaliser est ce que nous appelons un booléen aléatoire. Une variable booléenne n’a que deux valeurs possibles, true ou false.

Lorsque nous générons aléatoirement ce booléen, nous obtenons un booléen aléatoire. Ce tutoriel montrera comment créer un booléen aléatoire en C#.

Nous verrons également le moyen le plus rapide et le plus idéal pour le générer.

Utilisez la méthode Next() de la classe Random

La classe Random en C# nous fournit un arsenal d’aléatoires. Il donne un générateur pseudo-aléatoire qui peut produire une séquence aléatoire basée sur des exigences statistiques.

Bien que la classe ne fournisse pas explicitement de méthode pour les booléens comme elle le fait pour les bytes, les integers et les doubles. Mais il peut l’utiliser efficacement pour les générer puisque false et true ne sont rien d’autre que 0 et 1 du point de vue des programmeurs.

La première façon est d’utiliser la méthode Next() pour générer des entiers aléatoires dans la plage [0,n) en allouant n comme 2 et en réduisant la capacité à ne constituer que 0 et 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);
    }
  }
}

Production:

False True True False False
    // Note this is random and may not match with your actual output

Utilisez la méthode NextDouble() de la classe C# Random

Nous avons vu comment nous pouvions utiliser Next() pour générer un booléen aléatoire dans l’exemple précédent. Dans cette approche, nous verrons comment utiliser une autre méthode, NextDouble() de la même classe, Random.

Le NextDouble() renvoie une valeur double aléatoire entre 0.0 et 1.0. Ainsi, nous pouvons ajouter un séparateur à n’importe quel endroit entre ces deux nombres et diviser les nombres générés en true ou false en fonction d’une condition de séparation.

Par exemple, sélectionnons la valeur double 0.3 comme séparateur et la condition de séparation comme generated number >= 0.3. Donc si le nombre satisfait la condition, on obtient true, sinon false.

Pour obtenir une distribution suffisamment aléatoire, la valeur préférée du séparateur est 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);
    }
  }
}

Production:

True False True True False
    // Note this is random and may not match with your actual output

Les deux méthodes décrites dans le post sont raisonnablement rapides.

Mais supposons que nous devions choisir le plus rapide. Dans ce cas, la deuxième méthode semble plus courte.

La méthode Next() renvoie en interne (int)(this.Sample()*maxValue) par rapport à this.Sample() par NextDouble(), ce qui entraîne une surcharge supplémentaire de multiplication et de conversion.

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

Article connexe - Csharp Random

Article connexe - Csharp Boolean