Що таке генератор випадкових чисел у C #?

Генератор випадкових чисел - це вбудована бібліотека в C #, яка генерує цілі числа та числа з плаваючою комою безладно. Щоразу, коли викликається відповідний метод бібліотеки, він повертає випадкове число. Серія випадкових чисел - це набір чисел, які не відповідають жодному шаблону. Генератор випадкових чисел у C #, як правило, генерує такий ряд при кожному виклику.

Випадковий клас у C #

  • Отже, як C # генерує ряд випадкових чисел? Відповідь лежить у довільному класі простору імен системи C #.
  • Випадковий клас - це генератор псевдовипадкових чисел. Це означає, що цей клас покладається на створення ряду чисел, які не відповідають жодному шаблону. Але чи справді машина здатна генерувати випадкові числа? Як машина дізнається, яке число генерувати далі? Зрештою, машина призначена для дотримання інструкцій та виконання алгоритмів.
  • Ні, машина не може генерувати випадкові числа самостійно. Існує визначений математичний алгоритм, заснований на поточному годиннику та стані машини, який керує ним для вибору чисел із набору. Усі числа в наборі мають однакову ймовірність підбору. Таким чином, вони не є абсолютно випадковими. Вони йдуть за схемою. Просто закономірність є достатньо випадковою, щоб відповідати практичним вимогам людини.

Псевдо і безпечно

Наступне питання, яке спадає на думку, це чому вони називають його псевдовипадковим генератором чисел? Давайте зрозуміємо це через реальну поведінку людини. Коли людину пропонують вибрати випадковий колір, він підбирає певний колір. Скажімо, він вибрав Жовтого. Що змусило його вибрати жовтий колір? Це міг бути його улюблений колір або колір його оточення, або він міг думати про щось жовте в той час. Ця поведінка людини, яка зумовлює рішення вибрати щось випадковим чином, називається насінням у світі випадковості. Насіння є пусковим механізмом або початковою точкою випадковості.

Тепер, коли насіння передбачувано, випадкові числа стають менш випадковими. Потім їх називають псевдовипадковими числами. Коли непередбачувані, їх називають безпечними випадковими числами.

C # Random Class використовує поточну позначку часу як насіння, що дуже передбачувано. А значить, і термін генератор псевдовипадкових чисел.

Клас RNGCryptoServiceProvider

Клас RNGCryptoServiceProvider з простору імен System.Security.Cryptography здатний генерувати захищені випадкові числа, ті, які можна використовувати як паролі.

Функції генератора випадкових чисел у C #

Перше, що генерує випадкове число в C #, - ініціалізувати клас Random. Це може зробити будь-який із двох конструкторів класу:

  • Random (): ініціалізує об'єкт класу Random, використовуючи значення насіння, засноване на часі. Значення насіння - це поточна мітка часу машини. Хоча в пізніших версіях це було змінено на основі GUID.
  • Random (Int32): ініціалізує об'єкт класу Random, використовуючи вказане значення насіння. Щоб отримати наступне випадкове число з ряду, ми викликаємо метод Next () класу Random.
  • Далі (): Повертає негативне псевдовипадкове ціле число Int32.
  • Далі (Int32): Повертає негативне псевдовипадкове ціле число Int32 менше вказаного цілого числа.
  • Далі (Int32, Int32): Повертає негативне псевдовипадкове ціле число Int32 у вказаному діапазоні.

Цілі генератори випадкових чисел у C #

Давайте подивимось приклад, як генерувати випадкові цілі числа:

Приклад №1

Наведений нижче приклад генерує випадкові числа Int32.

Код:

using System;
public class Program
(
public static void Main()
(
Random rnd = new Random();
for (int i = 0; i < 10; i++)
Console.WriteLine("Random number (0) : (1)", i + 1, GenerateRandomInt(rnd));
)
public static int GenerateRandomInt(Random rnd)
(
return rnd.Next();
)
)

Вихід:

Приклад №2

Наведений нижче приклад генерує випадкові числа Int32 в діапазоні від 0 до 100.

Код:

using System;
public class Program
(
public static void Main()
(
Random rnd = new Random();
for (int i = 0; i < 10; i++)
Console.WriteLine("Random number (0) : (1)", i + 1, GenerateRandomInt(rnd));
)
public static int GenerateRandomInt(Random rnd)
(
return rnd.Next(100);
)
)

Вихід:

Приклад №3

Наведений нижче приклад генерує випадкові числа Int32 в діапазоні від 50 до 100.

Код:

using System;
public class Program
(
public static void Main()
(
Random rnd = new Random();
for (int i = 0; i < 10; i++)
Console.WriteLine("Random number (0) : (1)", i + 1, GenerateRandomInt(rnd));
)
public static int GenerateRandomInt(Random rnd)
(
return rnd.Next(50, 100);
)
)

Вихід:

Генерування чисел з плаваючою комою

Давайте подивимось приклад, як генерувати випадкові числа з плаваючою комою:

Приклад №1

Наведений нижче приклад генерує випадкові числа Int32.

Код:

using System;
public class Program
(
public static void Main()
(
Random rnd = new Random();
for (int i = 0; i < 10; i++)
Console.WriteLine("Random number (0) : (1)", i + 1, GenerateRandomInt(rnd));
)
public static double GenerateRandomInt(Random rnd)
(
return rnd.NextDouble();
)
)

Вихід:

Дуже поширена помилка

Найпоширеніша помилка, яку розробники допускають під час генерації випадкових чисел, полягає в тому, що для кожного випадкового числа вони створюють новий об’єкт Random Class. Як показано в прикладі нижче:

Приклад №1

Код:

using System;
public class Program
(
public static void Main()
(
for (int i = 0; i < 10; i++)
Console.WriteLine("Random number (0) : (1)", i + 1, GenerateRandomInt());
)
public static int GenerateRandomInt()
(
Random rnd = new Random(); //a very common mistake
return rnd.Next();
)
)

Вихід:

Наскільки випадкові числа однакові і чому це сталося?

Як пояснено в роботі Random Class, створені числа базуються на значенні насіння і поточному стані машини. Будь-який екземпляр класу Random починається з початкового значення, зберігає поточний стан і використовує його для створення наступного випадкового числа. У наведеному вище коді помилкою було створення нового екземпляра класу Random у кожній ітерації циклу. Отже, перед тим, як зміниться внутрішній годинник, код повністю виконується, і кожен екземпляр класу Random інстанціюється з однаковим початковим значенням. Це призводить до того самого набору чисел, що генеруються кожного разу.

Висновок - Генератор випадкових чисел у C #

У цій статті ми дізналися про генератор випадкових чисел у C # та про те, як він працює внутрішньо для генерування випадкових чисел. Ми також коротко вивчили поняття псевдовипадкових і безпечно-випадкових чисел. Цієї інформації достатньо для розробників для використання класу Random у своїх програмах. Глибоке занурення, якщо вам цікаво дізнатись більше про випадкові числа для паролів та одноразових паролів.

Рекомендовані статті

Це посібник з генератора випадкових чисел у C #. Тут ми обговорюємо, як працює генератор випадкових чисел, поняття псевдовипадкових та безпечних випадкових чисел та використання випадкових чисел. Ви також можете ознайомитись з іншими нашими пов’язаними статтями, щоб дізнатися більше -

  1. Математичні функції в C #
  2. Деструктор в C #
  3. Зворотне число в Python
  4. Змінні в C #
  5. Змінні в JavaScript
  6. Генератор випадкових чисел у Matlab
  7. Версії Tableau
  8. Генератор випадкових чисел у JavaScript
  9. Генератор випадкових чисел у PHP