C# Aléatoire Booléen
-
Utilisez la méthode
Next()
de la classeRandom
-
Utilisez la méthode
NextDouble()
de la classe C#Random
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 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