@nikmil

Как предугадать рандом по тикам?

Здравствуйте, заинтересовалась одной темой с рандомом.
Нашла программу, которая создает рандомные числа. Читала что числа не рандомные, а псведнослучайные, и зависят они от времени(тиков).
Так можно ли в программе рандому указать определённое время, по которому он бы ориентировался и генерировал случайное число?
class Program
    {
        static void Main(string[] args)
        {
            Random rnd = new Random();
            for (int i = 0; i < 1; i++)
                Console.WriteLine("{0,4}", rnd.Next(50, 501));
            Console.ReadKey();
        }
    }
  • Вопрос задан
  • 211 просмотров
Решения вопроса 1
FoggyFinder
@FoggyFinder
Если использовать конструктор по умолчанию класса Random, то в качестве зерна будет использоваться Environment.TickCount - время прошедшее с момента загрузки системы в миллисекундах.

Для того, чтобы генерировать одну и ту-же последовательность есть отдельная перегрузка, которая принимает "зерно" - значение которое используется для выбора начального числа. Например, вы хотите использовать определенное время

var ts = new TimeSpan(10, 10, 10);
var rnd = new Random((int)ts.TotalMilliseconds);


Таким образом будет генерироваться одна и та-же последовательность.

for (int i = 0; i < 1; i++)
    Console.WriteLine("{0,4}", rnd.Next(50, 501)); // 265


Еще можно заглянуть в исходники (Random.cs) и узнать реализацию чтобы "предсказание" было совсем точным :-)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы