Поиск…


Синтаксис

  • Random ()

  • Случайный (int Seed)

  • int Next ()

  • int Next (int maxValue)

  • int Next (int minValue, int maxValue)

параметры

параметры подробности
семя Значение для генерации случайных чисел. Если не установлено, значение по умолчанию определяется текущим системным временем.
MinValue Сгенерированные числа не будут меньше этого значения. Если значение не установлено, значение по умолчанию равно 0.
MaxValue Сгенерированные числа будут меньше этого значения. Если не установлено, значением по умолчанию является Int32.MaxValue .
возвращаемое значение Возвращает число со случайным значением.

замечания

Случайное семя, генерируемое системой, не одинаково в каждом отдельном прогоне.

Семена, сгенерированные в одно и то же время, могут быть одинаковыми.

Создать случайный int

В этом примере генерируются случайные значения от 0 до 2147483647.

Random rnd = new Random();
int randomNumber = rnd.Next();

Создать случайный двойной

Создайте случайное число от 0 до 1.0. (не включая 1.0)

Random rnd = new Random();
var randomDouble = rnd.NextDouble();

Генерировать случайный int в заданном диапазоне

Создайте случайное число между minValue и maxValue - 1 .

Random rnd = new Random();
var randomBetween10And20 = rnd.Next(10, 20);

Генерирование одной и той же последовательности случайных чисел снова и снова

При создании Random экземпляров с одним и тем же семенем будут генерироваться одинаковые числа.

int seed = 5;
for (int i = 0; i < 2; i++)
{
   Console.WriteLine("Random instance " + i);
   Random rnd = new Random(seed);
   for (int j = 0; j < 5; j++)
   {
      Console.Write(rnd.Next());
      Console.Write(" ");
   }

   Console.WriteLine();
}

Выход:

Random instance 0
726643700 610783965 564707973 1342984399 995276750
Random instance 1
726643700 610783965 564707973 1342984399 995276750

Создавать несколько случайных классов с разными семенами одновременно

Два случайных класса, созданные одновременно, будут иметь одинаковое начальное значение.

Использование System.Guid.NewGuid().GetHashCode() может получить другое семя даже в одно и то же время.

Random rnd1 = new Random();
Random rnd2 = new Random();
Console.WriteLine("First 5 random number in rnd1");
for (int i = 0; i < 5; i++)
    Console.WriteLine(rnd1.Next());

Console.WriteLine("First 5 random number in rnd2");
for (int i = 0; i < 5; i++)
    Console.WriteLine(rnd2.Next());

rnd1 = new Random(Guid.NewGuid().GetHashCode());
rnd2 = new Random(Guid.NewGuid().GetHashCode());
Console.WriteLine("First 5 random number in rnd1 using Guid");
for (int i = 0; i < 5; i++)
    Console.WriteLine(rnd1.Next());
Console.WriteLine("First 5 random number in rnd2 using Guid");
for (int i = 0; i < 5; i++)
    Console.WriteLine(rnd2.Next());

Другим способом достижения разных семян является использование другого экземпляра Random для извлечения значений семян.

Random rndSeeds = new Random();
Random rnd1 = new Random(rndSeeds.Next());
Random rnd2 = new Random(rndSeeds.Next());

Это также позволяет контролировать результат всех Random экземпляров, устанавливая только начальное значение для rndSeeds . Все остальные экземпляры будут детерминистически получены из этого единственного значения семени.

Создать случайный символ

Создайте случайную букву между a и z , используя перегрузку Next() для заданного диапазона чисел, а затем преобразование полученного int в char

Random rnd = new Random();
char randomChar = (char)rnd.Next('a','z'); 
//'a' and 'z' are interpreted as ints for parameters for Next()

Создайте число, которое представляет собой процент от максимального значения

Общей потребностью в случайных числах является генерация числа, которое составляет X% от некоторого максимального значения. это можно сделать, обработав результат NextDouble() в процентах:

var rnd = new Random();
var maxValue = 5000;
var percentage = rnd.NextDouble();
var result = maxValue * percentage; 
//suppose NextDouble() returns .65, result will hold 65% of 5000: 3250.


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow