Как работает генератор случайных чисел С#?

Мне просто интересно, как работает генератор случайных чисел в С#. Мне также было любопытно, как я могу создать программу, которая генерирует случайные ЦЕЛЫЕ INTEGER номера от 1 до 100.

Ответ 1

Мне просто интересно, как работает генератор случайных чисел в С#.

Эта специфичная для реализации, но запись в wikipedia для генераторов псевдослучайных чисел должна дать вам некоторые идеи.

Мне также было любопытно, как я могу создать программу, которая генерирует случайные целые числа INTEGER от 1 до 100.

Вы можете использовать Random.Next(int, int):

Random rng = new Random();
for (int i = 0; i < 10; i++)
{
    Console.WriteLine(rng.Next(1, 101));
}

Обратите внимание, что верхняя граница является исключительной - вот почему я использовал здесь 101.

Вы также должны знать некоторые из "gotchas", связанных с Random - в частности, вы не должны создавать новый экземпляр каждый раз, когда хотите генерировать случайное число, так как иначе вы создаете много случайных чисел за короткое время вы увидите много повторов. Подробнее см. мою статью по этому вопросу.

Ответ 2

Вы можете использовать Random.Next(int maxValue):

Return: 32-разрядное целое число со знаком, большее или равное нулю, и меньше, чем MaxValue; то есть диапазон возвращаемых значений обычно равен нулю но не maxValue. Однако, если maxValue равно нулю, maxValue вернулся.

var r = new Random();
// print random integer >= 0 and  < 100
Console.WriteLine(r.Next(100));

Для этого случая, однако, вы можете использовать Random.Next(int minValue, int maxValue), например:

// print random integer >= 1 and < 101
Console.WriteLine(r.Next(1, 101);)
// or perhaps (if you have this specific case)
Console.WriteLine(r.Next(100) + 1);

Ответ 3

Я искал интернет для RNG некоторое время. Все, что я видел, было либо сложным, либо просто не то, что я искал. Прочитав несколько статей, я смог придумать этот простой код.

{
  Random rnd = new Random(DateTime.Now.Millisecond);
  int[] b = new int[10] { 5, 8, 1, 7, 3, 2, 9, 0, 4, 6 };
  textBox1.Text = Convert.ToString(b[rnd.Next(10)])
}

Простое объяснение,

  • создать массив размером 1 мер.
  • заполнить массив с неупорядоченными номерами.
  • используйте rnd.Next, чтобы получить позицию числа, которое будет выбрано.

Это хорошо работает.

Чтобы получить случайное число менее 100, используйте

{
  Random rnd = new Random(DateTime.Now.Millisecond);
  int[] b = new int[10] { 5, 8, 1, 7, 3, 2, 9, 0, 4, 6 };
  int[] d = new int[10] { 9, 4, 7, 2, 8, 0, 5, 1, 3, 4 };
  textBox1.Text = Convert.ToString(b[rnd.Next(10)]) + Convert.ToString(d[rnd.Next(10)]);
}

и т.д. для 3, 4, 5 и 6... цифр случайных чисел.

Надеюсь, что это поможет кому-то положительно.