Шта је генератор случајних бројева у Ц #?

Генератор случајних бројева је уграђена библиотека у Ц # која генерише случајне бројеве и бројеве са зарезом. Сваки пут када се позива релевантна метода библиотеке, она враћа случајни број. Низ случајних бројева је скуп бројева који не прате ниједан образац. Генератор случајних бројева у Ц # тежи да генерише такав низ кад год се позове.

Случајна класа у Ц #

  • Како Ц # генерише низ случајних бројева? Одговор се налази унутар класе случајних података у простору с именима Ц #.
  • Случајна класа је класа генератора псеудо-случајних бројева. То значи да је ова класа задужена да генерише низ бројева који не прате ниједан образац. Али, да ли је машина заиста способна да генерише случајне бројеве? Како би машина могла знати који број следеће генерирати? Уосталом, машина је дизајнирана да следи упутства и извршава алгоритме.
  • Не, машина не може самостално да генерише случајне бројеве. Постоји дефинисан математички алгоритам, заснован на тренутном сату и стању машине, који га води за одабир бројева из скупа. Сви бројеви у сету имају једнаку вероватноћу да буду покупљени. Дакле, они нису савршено случајни. Они слиједе образац. Само је узорак довољно насумичан да испуни практичне људске потребе.

Псеудо и сигурно

Следеће питање које вам пада на памет је зашто га зову псеудо-случајна класа генератора бројева? Схватимо то кроз људско понашање у стварном животу. Када се од човека тражи да одабере случајну боју, он узима одређену боју. Рецимо да је одабрао Жуту. Шта га је натерало да одабере жуто? То би му могла бити омиљена боја или боја околине, или је тада могао размишљати о нечем жутом. Ово људско понашање које покреће одлуку да се одабере нешто насумично назива се семеном у свету случајности. Семе је покретач или почетна тачка случајности.

Сада, када је семе предвидљиво, случајни бројеви постају мање случајни. Они се тада називају псеудо случајним бројевима. Када су непредвидиви, називају се сигурно-насумични бројеви.

Ц # Рандом Цласс користи тренутни жиг времена као семе, што је врло предвидљиво. Отуда и термин класе псеудо-случајних бројева.

РНГЦриптоСервицеПровидер класа

Класа РНГЦриптоСервицеПровидер из Систем.Сецурити.Цриптограпхи именских простора може да генерише сигурне случајне бројеве, оне који се могу користити као лозинке.

Функције генератора случајних бројева у Ц #

Прва ствар за генерисање случајног броја у Ц # је иницијализација класе Рандом. То може да уради било који од два конструктора класе:

  • Рандом (): Иницијализира објект класе Рандом користећи временски засновану вриједност сјемена. Вредност семена је тренутна временска ознака машине. Иако је у каснијим верзијама ово промењено у ГУИД.
  • Рандом (Инт32): Иницијализира објект класе Рандом користећи специфицирану вриједност сјемена. Да бисмо добили следећи случајни број из серије, зовемо методу Нект () класе Рандом.
  • Следећи (): Враћа не-негативни псеудо-случајни Инт32 цео број.
  • Следећи (Инт32): Враћа не-негативни псеудо-случајни Инт32 цели број мањи од наведеног целог броја.
  • Следећи (Инт32, Инт32): Враћа не-негативан псеудо-случајни Инт32 цео број у наведеном распону.

Цели генератори случајних бројева у Ц #

Погледајмо пример како се генеришу случајни цели бројеви:

Пример # 1

Следећи пример генерише случајне Инт32 бројеве.

Шифра:

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

Следећи пример генерише случајне Инт32 бројеве у распону од 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

Следећи пример генерише случајне Инт32 бројеве у распону од 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

Следећи пример генерише случајне Инт32 бројеве.

Шифра:

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();
)
)

Излаз:

Врло честа грешка

Најчешћа грешка коју програмери чине током генерисања случајних бројева је та што за сваки случајни број стварају нови објект Рандом Цласс. Као што је приказано у доњем примеру:

Пример # 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();
)
)

Излаз:

Колико су случајни бројеви сви исти и зашто се ово догодило?

Као што је објашњено у раду Рандом Цласс-а, генерисани бројеви се заснивају на вредности семена и тренутном стању машине. Свака инстанца класе Рандом започиње семенском вредношћу, спрема тренутно стање и користи је за генерисање следећег случајног броја. У горе наведеном коду грешка је била креирање нове инстанце класе Рандом у свакој итерацији петље. Дакле, пре него што се време у интерном сату промени, код се у потпуности извршава, а свака инстанца класе Рандом се инстанцира са истом семенском вредношћу. То резултира истим низом бројева који се генеришу сваки пут.

Закључак - Генератор случајних бројева у Ц #

У овом чланку смо сазнали о генератору случајних бројева у Ц # и како интерно делује на генерисање случајних бројева. Такође смо кратко научили концепт псеудо случајних и сигурних случајних бројева. Ове информације су довољне да програмери користе класу Рандом у својим апликацијама. Дубоко зароните, ако сте заинтересовани да истражите више о случајним бројевима за лозинке и једнократне лозинке.

Препоручени чланци

Ово је водич за Генератор случајних бројева у Ц #. Овдје ћемо расправљати о раду генератора случајних бројева, концепту псеудо случајних и сигурних случајних бројева и употреби насумичних бројева. Можете и да прођете кроз остале сродне чланке да бисте сазнали више -

  1. Математичке функције у Ц #
  2. Деструктор у Ц #
  3. Обрнути број у Питхон-у
  4. Променљиве у Ц #
  5. Варијабле у ЈаваСцрипт-у
  6. Генератор случајних бројева у Матлабу
  7. Таблеау Версионс
  8. Генератор случајних бројева у ЈаваСцрипт-у
  9. Генератор случајних бројева у ПХП-у

Категорија: