Random Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Představuje pseudonáhodný generátor čísel, což je algoritmus, který vytváří sekvenci čísel, která splňují určité statistické požadavky na náhodnost.
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
- Dědičnost
-
Random
- Atributy
Příklady
Následující příklad vytvoří jeden generátor náhodných čísel a volá jeho NextBytes, Nexta NextDouble metody generovat sekvence náhodných čísel v různých oblastech.
// 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
Následující příklad vygeneruje náhodné celé číslo, které používá jako index k načtení řetězcové hodnoty z pole.
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
Poznámky
Poznámka:
Chcete-li vygenerovat kryptograficky bezpečné náhodné číslo, například číslo vhodné pro vytvoření náhodného hesla, použijte jednu ze statických metod ve RandomNumberGenerator třídě.
Další informace o tomto rozhraní API naleznete v tématu Doplňkové poznámky k rozhraní API pro Random.
Poznámky pro dědice
V rozhraní .NET Framework 2.0 a novější se chování Next(), Next(Int32, Int32)a NextBytes(Byte[]) metody změnily tak, aby tyto metody nemusí nutně volat odvozenou třídu implementace Sample() metody. V důsledku toho by třídy odvozené z Random tohoto cíle rozhraní .NET Framework 2.0 a novější také měly tyto tři metody přepsat.
Poznámky pro volající
Implementace generátoru náhodných čísel ve Random třídě není zaručená, že zůstane stejná napříč hlavními verzemi .NET. V důsledku toho byste neměli předpokládat, že stejné počáteční hodnoty budou mít za následek stejnou pseudonáhodnou sekvenci v různých verzích .NET.
Konstruktory
| Name | Description |
|---|---|
| Random() |
Inicializuje novou instanci Random třídy pomocí výchozí počáteční hodnoty. |
| Random(Int32) |
Inicializuje novou instanci Random třídy pomocí zadané počáteční hodnoty. |
Vlastnosti
| Name | Description |
|---|---|
| Shared |
Poskytuje instanci bezpečnou Random pro přístup z více vláken, kterou lze použít souběžně z jakéhokoli vlákna. |
Metody
| Name | Description |
|---|---|
| Equals(Object) |
Určuje, zda je zadaný objekt roven aktuálnímu objektu. (Zděděno od Object) |
| GetHashCode() |
Slouží jako výchozí funkce hash. (Zděděno od Object) |
| GetHexString(Int32, Boolean) |
Vytvoří řetězec vyplněný náhodnými šestnáctkovými znaky. |
| GetHexString(Span<Char>, Boolean) |
Vyplní vyrovnávací paměť náhodnými šestnáctkovými znaky. |
| GetItems<T>(ReadOnlySpan<T>, Int32) |
Vytvoří pole naplněné náhodně vybranými položkami ze zadané sady voleb. |
| GetItems<T>(ReadOnlySpan<T>, Span<T>) |
Vyplní prvky zadaného rozsahu náhodně vybranými položkami ze zadané sady voleb. |
| GetItems<T>(T[], Int32) |
Vytvoří pole naplněné náhodně vybranými položkami ze zadané sady voleb. |
| GetString(ReadOnlySpan<Char>, Int32) |
Vytvoří řetězec naplněný znaky vybranými náhodně z |
| GetType() |
Získá Type aktuální instance. (Zděděno od Object) |
| MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (Zděděno od Object) |
| Next() |
Vrátí nezáporné náhodné celé číslo. |
| Next(Int32, Int32) |
Vrátí náhodné celé číslo, které je v zadaném rozsahu. |
| Next(Int32) |
Vrátí nezáporné náhodné celé číslo, které je menší než zadané maximum. |
| NextBytes(Byte[]) |
Vyplní prvky zadaného pole bajtů náhodnými čísly. |
| NextBytes(Span<Byte>) |
Vyplní prvky zadaného rozsahu bajtů náhodnými čísly. |
| NextDouble() |
Vrátí náhodné číslo s plovoucí desetinou čárkou, které je větší nebo rovno 0,0 a menší než 1,0. |
| NextInt64() |
Vrátí nezáporné náhodné celé číslo. |
| NextInt64(Int64, Int64) |
Vrátí náhodné celé číslo, které je v zadaném rozsahu. |
| NextInt64(Int64) |
Vrátí nezáporné náhodné celé číslo, které je menší než zadané maximum. |
| NextSingle() |
Vrátí náhodné číslo s plovoucí desetinou čárkou, které je větší nebo rovno 0,0 a menší než 1,0. |
| Sample() |
Vrátí náhodné číslo s plovoucí desetinou čárkou v rozmezí od 0,0 do 1,0. |
| Shuffle<T>(Span<T>) |
Provede místní náhodné prohazování rozpětí. |
| Shuffle<T>(T[]) |
Provede místní náhodné prohazování pole. |
| ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |