Freigeben über


Random Klasse

Definition

Stellt einen Pseudo-Zufallszahlengenerator dar, bei dem es sich um einen Algorithmus handelt, der eine Folge von Zahlen erzeugt, die bestimmte statistische Anforderungen für Zufallsvarianz erfüllen.

public ref class Random
public class Random
[System.Serializable]
public class Random
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class Random
type Random = class
[<System.Serializable>]
type Random = class
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type Random = class
Public Class Random
Vererbung
Random
Attribute

Beispiele

Im folgenden Beispiel wird ein einzelner Zufallszahlengenerator erstellt, der seine NextBytesZufallszahlen Nextund NextDouble Methoden aufruft, um Sequenzen von Zufallszahlen innerhalb verschiedener Bereiche zu generieren.

// Instantiate random number generator using system-supplied value as seed.
var rand = new Random();

// Generate and display 5 random byte (integer) values.
byte[] bytes = new byte[5];
rand.NextBytes(bytes);
Console.WriteLine("Five random byte values:");
foreach (byte byteValue in bytes)
    Console.Write("{0, 5}", byteValue);
Console.WriteLine();

// Generate and display 5 random integers.
Console.WriteLine("Five random integer values:");
for (int ctr = 0; ctr <= 4; ctr++)
    Console.Write("{0,15:N0}", rand.Next());
Console.WriteLine();

// Generate and display 5 random integers between 0 and 100.
Console.WriteLine("Five random integers between 0 and 100:");
for (int ctr = 0; ctr <= 4; ctr++)
    Console.Write("{0,8:N0}", rand.Next(101));
Console.WriteLine();

// Generate and display 5 random integers from 50 to 100.
Console.WriteLine("Five random integers between 50 and 100:");
for (int ctr = 0; ctr <= 4; ctr++)
    Console.Write("{0,8:N0}", rand.Next(50, 101));
Console.WriteLine();

// Generate and display 5 random floating point values from 0 to 1.
Console.WriteLine("Five Doubles.");
for (int ctr = 0; ctr <= 4; ctr++)
    Console.Write("{0,8:N3}", rand.NextDouble());
Console.WriteLine();

// Generate and display 5 random floating point values from 0 to 5.
Console.WriteLine("Five Doubles between 0 and 5.");
for (int ctr = 0; ctr <= 4; ctr++)
    Console.Write("{0,8:N3}", rand.NextDouble() * 5);

// The example displays output like the following:
//    Five random byte values:
//      194  185  239   54  116
//    Five random integer values:
//        507,353,531  1,509,532,693  2,125,074,958  1,409,512,757    652,767,128
//    Five random integers between 0 and 100:
//          16      78      94      79      52
//    Five random integers between 50 and 100:
//          56      66      96      60      65
//    Five Doubles.
//       0.943   0.108   0.744   0.563   0.415
//    Five Doubles between 0 and 5.
//       2.934   3.130   0.292   1.432   4.369
// Instantiate random number generator using system-supplied value as seed.
let rand = Random()

// Generate and display 5 random byte (integer) values.
let bytes = Array.zeroCreate 5
rand.NextBytes bytes
printfn "Five random byte values:"
for byte in bytes do
    printf "%5i" byte
printfn ""

// Generate and display 5 random integers.
printfn "Five random integer values:"
for _ = 0 to 4 do
    printf $"{rand.Next(),15:N0}" 
printfn ""

// Generate and display 5 random integers between 0 and 100.
printfn "Five random integers between 0 and 100:"
for _ = 0 to 4 do
    printf $"{rand.Next 101,8:N0}"
printfn ""

// Generate and display 5 random integers from 50 to 100.
printfn "Five random integers between 50 and 100:"
for _ = 0 to 4 do
    printf $"{rand.Next(50, 101),8:N0}"
printfn ""

// Generate and display 5 random floating point values from 0 to 1.
printfn "Five Doubles."
for _ = 0 to 4 do
    printf $"{rand.NextDouble(),8:N3}"
printfn ""

// Generate and display 5 random floating point values from 0 to 5.
printfn "Five Doubles between 0 and 5."
for _ = 0 to 4 do
    printf $"{rand.NextDouble() * 5.0,8:N3}"

// The example displays output like the following:
//    Five random byte values:
//      194  185  239   54  116
//    Five random integer values:
//        507,353,531  1,509,532,693  2,125,074,958  1,409,512,757    652,767,128
//    Five random integers between 0 and 100:
//          16      78      94      79      52
//    Five random integers between 50 and 100:
//          56      66      96      60      65
//    Five Doubles.
//       0.943   0.108   0.744   0.563   0.415
//    Five Doubles between 0 and 5.
//       2.934   3.130   0.292   1.432   4.369
Module Example
   Public Sub Main()
      ' Instantiate random number generator using system-supplied value as seed.
      Dim rand As New Random()
      ' Generate and display 5 random byte (integer) values.
      Dim bytes(4) As Byte
      rand.NextBytes(bytes)
      Console.WriteLine("Five random byte values:")
      For Each byteValue As Byte In bytes
         Console.Write("{0, 5}", byteValue)
      Next
      Console.WriteLine()   
      ' Generate and display 5 random integers.
      Console.WriteLine("Five random integer values:")
      For ctr As Integer = 0 To 4
         Console.Write("{0,15:N0}", rand.Next)
      Next                     
      Console.WriteLine()
      ' Generate and display 5 random integers between 0 and 100.'
      Console.WriteLine("Five random integers between 0 and 100:")
      For ctr As Integer = 0 To 4
         Console.Write("{0,8:N0}", rand.Next(101))
      Next                     
      Console.WriteLine()
      ' Generate and display 5 random integers from 50 to 100.
      Console.WriteLine("Five random integers between 50 and 100:")
      For ctr As Integer = 0 To 4
         Console.Write("{0,8:N0}", rand.Next(50, 101))
      Next                     
      Console.WriteLine()
      ' Generate and display 5 random floating point values from 0 to 1.
      Console.WriteLine("Five Doubles.")
      For ctr As Integer = 0 To 4
         Console.Write("{0,8:N3}", rand.NextDouble())
      Next                     
      Console.WriteLine()
      ' Generate and display 5 random floating point values from 0 to 5.
      Console.WriteLine("Five Doubles between 0 and 5.")
      For ctr As Integer = 0 To 4
         Console.Write("{0,8:N3}", rand.NextDouble() * 5)
      Next                     
   End Sub
End Module
' The example displays output like the following:
'    Five random byte values:
'      194  185  239   54  116
'    Five random integer values:
'        507,353,531  1,509,532,693  2,125,074,958  1,409,512,757    652,767,128
'    Five random integers between 0 and 100:
'          16      78      94      79      52
'    Five random integers between 50 and 100:
'          56      66      96      60      65
'    Five Doubles.
'       0.943   0.108   0.744   0.563   0.415
'    Five Doubles between 0 and 5.
'       2.934   3.130   0.292   1.432   4.369

Im folgenden Beispiel wird eine zufällige ganze Zahl generiert, die als Index zum Abrufen eines Zeichenfolgenwerts aus einem Array verwendet wird.

Random rnd = new();
string[] malePetNames = [ "Rufus", "Bear", "Dakota", "Fido",
                        "Vanya", "Samuel", "Koani", "Volodya",
                        "Prince", "Yiska" ];
string[] femalePetNames = [ "Maggie", "Penny", "Saya", "Princess",
                          "Abby", "Laila", "Sadie", "Olivia",
                          "Starlight", "Talla" ];

// Generate random indexes for pet names.
int mIndex = rnd.Next(malePetNames.Length);
int fIndex = rnd.Next(femalePetNames.Length);

// Display the result.
Console.WriteLine("Suggested pet name of the day: ");
Console.WriteLine($"   For a male:     {malePetNames[mIndex]}");
Console.WriteLine($"   For a female:   {femalePetNames[fIndex]}");

// The example displays output similar to the following:
//       Suggested pet name of the day:
//          For a male:     Koani
//          For a female:   Maggie
let rnd = Random()

let malePetNames =
    [| "Rufus"; "Bear"; "Dakota"; "Fido";
        "Vanya"; "Samuel"; "Koani"; "Volodya";
        "Prince"; "Yiska" |]
let femalePetNames = 
    [| "Maggie"; "Penny"; "Saya"; "Princess";
        "Abby"; "Laila"; "Sadie"; "Olivia";
        "Starlight"; "Talla" |]

// Generate random indexes for pet names.
let mIndex = rnd.Next malePetNames.Length
let fIndex = rnd.Next femalePetNames.Length

// Display the result.
printfn "Suggested pet name of the day: "
printfn "   For a male:     %s" malePetNames.[mIndex]
printfn "   For a female:   %s" femalePetNames.[fIndex]

// The example displays output similar to the following:
//       Suggested pet name of the day:
//          For a male:     Koani
//          For a female:   Maggie
Module Example
   Public Sub Main()
      Dim rnd As New Random()
      Dim malePetNames() As String = { "Rufus", "Bear", "Dakota", "Fido", 
                                    "Vanya", "Samuel", "Koani", "Volodya", 
                                    "Prince", "Yiska" }
      Dim femalePetNames() As String = { "Maggie", "Penny", "Saya", "Princess", 
                                         "Abby", "Laila", "Sadie", "Olivia", 
                                         "Starlight", "Talla" }                                      
      
      ' Generate random indexes for pet names.
      Dim mIndex As Integer = rnd.Next(malePetNames.Length)
      Dim fIndex As Integer = rnd.Next(femalePetNames.Length)
      
      ' Display the result.
      Console.WriteLine("Suggested pet name of the day: ")
      Console.WriteLine("   For a male:     {0}", malePetNames(mIndex))
      Console.WriteLine("   For a female:   {0}", femalePetNames(fIndex))
   End Sub
End Module
' The example displays output similar to the following:
'       Suggested pet name of the day:
'          For a male:     Koani
'          For a female:   Maggie

Hinweise

Hinweis

Um eine kryptografisch sichere Zufallszahl zu generieren, z. B. eine, die zum Erstellen eines zufälligen Kennworts geeignet ist, verwenden Sie eine der statischen Methoden in der RandomNumberGenerator Klasse.

Weitere Informationen zu dieser API finden Sie in den ergänzenden API-Hinweisen für Random.

Hinweise für Vererber

In .NET Framework 2.0 und höher wurde das Verhalten der Next()Methoden Next(Int32, Int32)NextBytes(Byte[]) geändert, sodass diese Methoden nicht unbedingt die abgeleitete Klassenimplementierung der Sample() Methode aufrufen. Daher sollten von diesem Random Ziel .NET Framework 2.0 und höher abgeleitete Klassen auch diese drei Methoden überschreiben.

Hinweise für Aufrufer

Die Implementierung des Zufallszahlengenerators in der Random Klasse ist nicht garantiert, dass sie in den Hauptversionen von .NET gleich bleiben. Daher sollten Sie nicht davon ausgehen, dass derselbe Seed in verschiedenen Versionen von .NET zur gleichen Pseudo-Zufallssequenz führt.

Konstruktoren

Name Beschreibung
Random()

Initialisiert eine neue Instanz der Random Klasse mithilfe eines Standardsamenwerts.

Random(Int32)

Initialisiert eine neue Instanz der Random Klasse, wobei der angegebene Startwert verwendet wird.

Eigenschaften

Name Beschreibung
Shared

Stellt eine threadsichere Random Instanz bereit, die von jedem Thread gleichzeitig verwendet werden kann.

Methoden

Name Beschreibung
Equals(Object)

Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht.

(Geerbt von Object)
GetHashCode()

Dient als Standardhashfunktion.

(Geerbt von Object)
GetHexString(Int32, Boolean)

Erstellt eine Zeichenfolge, die mit zufälligen Hexadezimalzeichen gefüllt ist.

GetHexString(Span<Char>, Boolean)

Füllt einen Puffer mit zufälligen Hexadezimalzeichen aus.

GetItems<T>(ReadOnlySpan<T>, Int32)

Erstellt ein Array, das mit zufällig ausgewählten Elementen aus der bereitgestellten Auswahl aufgefüllt wird.

GetItems<T>(ReadOnlySpan<T>, Span<T>)

Füllt die Elemente einer angegebenen Spanne mit elementen aus, die zufällig aus der bereitgestellten Auswahl ausgewählt wurden.

GetItems<T>(T[], Int32)

Erstellt ein Array, das mit zufällig ausgewählten Elementen aus der bereitgestellten Auswahl aufgefüllt wird.

GetString(ReadOnlySpan<Char>, Int32)

Erstellt eine Zeichenfolge, die mit zufällig ausgewählten Zeichen aufgefüllt choiceswird.

GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
Next()

Gibt eine nicht negative Zufallszahl zurück.

Next(Int32, Int32)

Gibt eine zufällige ganze Zahl zurück, die sich innerhalb eines angegebenen Bereichs befindet.

Next(Int32)

Gibt eine nicht negative Zufallszahl zurück, die kleiner als der angegebene Höchstwert ist.

NextBytes(Byte[])

Füllt die Elemente eines angegebenen Bytearrays mit Zufallszahlen aus.

NextBytes(Span<Byte>)

Füllt die Elemente einer angegebenen Bytespanne mit Zufallszahlen aus.

NextDouble()

Gibt eine zufällige Gleitkommazahl zurück, die größer oder gleich 0,0 und kleiner als 1,0 ist.

NextInt64()

Gibt eine nicht negative Zufallszahl zurück.

NextInt64(Int64, Int64)

Gibt eine zufällige ganze Zahl zurück, die sich innerhalb eines angegebenen Bereichs befindet.

NextInt64(Int64)

Gibt eine nicht negative Zufallszahl zurück, die kleiner als der angegebene Höchstwert ist.

NextSingle()

Gibt eine zufällige Gleitkommazahl zurück, die größer oder gleich 0,0 und kleiner als 1,0 ist.

Sample()

Gibt eine zufällige Gleitkommazahl zwischen 0,0 und 1,0 zurück.

Shuffle<T>(Span<T>)

Führt eine in-situ-Shuffle einer Spanne aus.

Shuffle<T>(T[])

Führt eine direkte Shuffle eines Arrays aus.

ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Gilt für: