C# Zufällig Bool

Harshit Jindal 12 Oktober 2023
  1. Verwendung von die Next()-Methode aus der C#-Klasse Random
  2. Verwendung von die Methode NextDouble() aus der C#-Klasse Random
C# Zufällig Bool

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 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

Verwandter Artikel - Csharp Random

Verwandter Artikel - Csharp Boolean