Random Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Reprezentuje generator liczb pseudolosowych, który jest algorytmem tworzącym sekwencję liczb spełniających określone wymagania statystyczne dotyczące losowości.
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
- Dziedziczenie
-
Random
- Atrybuty
Przykłady
Poniższy przykład tworzy pojedynczy generator liczb losowych i wywołuje jego NextBytesmetody , Nexti NextDouble w celu generowania sekwencji liczb losowych w różnych zakresach.
// 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
Poniższy przykład generuje losową liczbę całkowitą używaną jako indeks w celu pobrania wartości ciągu z tablicy.
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
Uwagi
Uwaga / Notatka
Aby wygenerować kryptograficznie bezpieczny losowy numer, taki jak taki, który jest odpowiedni do tworzenia losowego hasła, użyj jednej ze statycznych metod w RandomNumberGenerator klasie .
Aby uzyskać więcej informacji na temat tego interfejsu API, zobacz Dodatkowe uwagi dotyczące interfejsu API dla losowych.
Notatki dotyczące dziedziczenia
W programie .NET Framework 2.0 lub nowszym zachowanie Next()metod , Next(Int32, Int32)i NextBytes(Byte[]) uległo zmianie, tak aby te metody niekoniecznie wywoływać pochodną implementację Sample() klasy metody . W związku z tym klasy pochodzące z Random tego docelowego programu .NET Framework 2.0 i nowszego powinny również zastąpić te trzy metody.
Notatki dotyczące wywoływania
Implementacja generatora liczb losowych w Random klasie nie ma gwarancji, że pozostanie taka sama w głównych wersjach platformy .NET. W związku z tym nie należy zakładać, że ten sam inicjator spowoduje utworzenie tej samej pseudolosowej sekwencji w różnych wersjach platformy .NET.
Konstruktory
| Nazwa | Opis |
|---|---|
| Random() |
Inicjuje nowe wystąpienie Random klasy przy użyciu domyślnej wartości inicjatora. |
| Random(Int32) |
Inicjuje Random nowe wystąpienie klasy przy użyciu określonej wartości inicjatora. |
Właściwości
| Nazwa | Opis |
|---|---|
| Shared |
Udostępnia bezpieczne wątkowo Random wystąpienie, które może być używane współbieżnie z dowolnego wątku. |
Metody
| Nazwa | Opis |
|---|---|
| Equals(Object) |
Określa, czy określony obiekt jest równy bieżącemu obiektowi. (Odziedziczone po Object) |
| GetHashCode() |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
| GetHexString(Int32, Boolean) |
Tworzy ciąg wypełniony losowymi znakami szesnastkowymi. |
| GetHexString(Span<Char>, Boolean) |
Wypełnia bufor z losowymi znakami szesnastkowymi. |
| GetItems<T>(ReadOnlySpan<T>, Int32) |
Tworzy tablicę wypełniona elementami wybranymi losowo z podanego zestawu opcji. |
| GetItems<T>(ReadOnlySpan<T>, Span<T>) |
Wypełnia elementy określonego zakresu elementami wybranymi losowo z dostarczonego zestawu wyborów. |
| GetItems<T>(T[], Int32) |
Tworzy tablicę wypełniona elementami wybranymi losowo z podanego zestawu opcji. |
| GetString(ReadOnlySpan<Char>, Int32) |
Tworzy ciąg wypełniony znakami wybranymi losowo na podstawie |
| GetType() |
Pobiera Type bieżącego wystąpienia. (Odziedziczone po Object) |
| MemberwiseClone() |
Tworzy płytkią kopię bieżącego Object. (Odziedziczone po Object) |
| Next() |
Zwraca nieujemną liczbę całkowitą losową. |
| Next(Int32, Int32) |
Zwraca losową liczbę całkowitą, która znajduje się w określonym zakresie. |
| Next(Int32) |
Zwraca nieujemną liczbę całkowitą losową mniejszą niż określona maksymalna. |
| NextBytes(Byte[]) |
Wypełnia elementy określonej tablicy bajtów liczbami losowymi. |
| NextBytes(Span<Byte>) |
Wypełnia elementy określonego zakresu bajtów liczbami losowymi. |
| NextDouble() |
Zwraca losową liczbę zmiennoprzecinkową większą lub równą 0,0 i mniejszą niż 1,0. |
| NextInt64() |
Zwraca nieujemną liczbę całkowitą losową. |
| NextInt64(Int64, Int64) |
Zwraca losową liczbę całkowitą, która znajduje się w określonym zakresie. |
| NextInt64(Int64) |
Zwraca nieujemną liczbę całkowitą losową mniejszą niż określona maksymalna. |
| NextSingle() |
Zwraca losową liczbę zmiennoprzecinkową większą lub równą 0,0 i mniejszą niż 1,0. |
| Sample() |
Zwraca losową liczbę zmiennoprzecinkową z zakresu od 0,0 do 1,0. |
| Shuffle<T>(Span<T>) |
Wykonuje mieszania w miejscu rozpiętości. |
| Shuffle<T>(T[]) |
Wykonuje mieszania tablicy w miejscu. |
| ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |