C# Zufällig Bool
-
Verwendung von die
Next()
-Methode aus der C#-KlasseRandom
-
Verwendung von die Methode
NextDouble()
aus der C#-KlasseRandom
Sind Sie auf eine Situation gestoßen, in der Sie programmatisch eine Münze werfen müssen? Wollten Sie schon immer Dinge zufällig zwischen zwei Datenbanken verteilen?
Das, was Sie erreichen möchten, nennen wir einen zufälligen booleschen Wert. Eine boolesche
Variable hat nur zwei mögliche Werte, true
oder false
.
Wenn wir diesen booleschen Wert zufällig generieren, erhalten wir einen zufälligen booleschen Wert. Dieses Tutorial zeigt, wie man mit C# einen zufälligen booleschen Wert erstellt.
Wir werden auch den schnellsten und idealsten Weg sehen, es zu generieren.
Verwendung von die Next()
-Methode aus der C#-Klasse Random
Die Klasse Random
in C# stellt uns ein Arsenal an Zufälligkeit zur Verfügung. Es gibt einen Pseudo-Zufallsgenerator, der eine Zufallsfolge basierend auf statistischen Anforderungen erzeugen kann.
Obwohl die Klasse explizit keine Methode für boolean bereitstellt, wie sie es für bytes
, integers
und doubles
tut. Aber es kann sie effizient verwenden, um sie zu generieren, da false
und true
aus Programmiererperspektive nichts anderes als 0
und 1
sind.
Die erste Möglichkeit besteht darin, die Methode Next()
zu verwenden, um zufällige ganze Zahlen im Bereich [0,n)
zu erzeugen, indem n
als 2
zugewiesen und die Kapazität reduziert wird, um nur 0
und 1
zu bilden.
// 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);
}
}
}
Ausgabe:
False
True
True
False
False
// Note this is random and may not match with your actual output
Verwendung von die Methode NextDouble()
aus der C#-Klasse Random
Wir haben im vorherigen Beispiel gesehen, wie wir mit Next()
einen zufälligen booleschen Wert erzeugen können. In diesem Ansatz werden wir sehen, wie wir eine andere Methode, NextDouble()
, aus derselben Klasse, Random
, verwenden können.
NextDouble()
gibt einen zufälligen Double-Wert zwischen 0.0
und 1.0
zurück. Wir können also an beliebiger Stelle zwischen diesen beiden Zahlen ein Trennzeichen einfügen und die generierten Zahlen anhand einer Trennbedingung in true
oder false
unterteilen.
Wählen wir beispielsweise als Trennzeichen den Double-Wert 0.3
und als Trennbedingung erzeugte Zahl >= 0.3
. Wenn also die Zahl die Bedingung erfüllt, erhalten wir true
, sonst false
.
Um eine ausreichend zufällige Verteilung zu erreichen, ist der bevorzugte Wert des Trennzeichens 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);
}
}
}
Ausgabe:
True
False
True
True
False
// Note this is random and may not match with your actual output
Beide im Beitrag beschriebenen Methoden sind recht schnell.
Aber angenommen, wir müssen den Schnellsten auswählen. In diesem Fall erscheint die zweite Methode kürzer.
Die Methode Next()
gibt intern (int)(this.Sample()*maxValue)
zurück, verglichen mit nur this.Sample()
durch NextDouble()
, was zu einem zusätzlichen Overhead durch Multiplikation und Casting führt.
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