Как компилятор получает коэффициенты для генерации псевдослучайных чисел?

Здравствуйте. Задался вопросом генерации псевдослучайных чисел в Visual Studio 2013 на c++ и c#. В информации найденной в интернете говорится что многие компиляторы (вроде и Visual Studio?) используют линейный конгруэнтный метод. В этом методе используются коэффициенты (ссылка).

И вот вопрос, как компилятор задает эти коэффициенты? На основе чего он их получает, от куда берет и т.д.? Как я понимаю они не могут быть жестко заданы в компиляторе, а должны быть разные при каждом вызове рандома иначе всегда будут получаться одинаковые последовательности.

Буду благодарен за информацию или ссылки.
  • Вопрос задан
  • 2545 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Kyberman
Коэффициенты жёстко заданы. Для того, чтобы изменялись последовательности, изменяется начальное значение (обозначено X0 в википедии по вашей ссылке). Обычно для этого используют текущее время.
Например так:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
   int i, n;
   time_t t;
   
   n = 5;
   
   /* Intializes random number generator */
   srand((unsigned) time(&t));

   /* Print 5 random numbers from 0 to 50 */
   for (i = 0 ; i < n ; i++)
   {
      printf("%d\n", rand() % 50);
   }
   
  return 0;
}
Ответ написан
Комментировать
donkaban
@donkaban
Умею рисовать тени
давно пора перестать гуглить stdlib.h и начинать рассматривать random
www.cplusplus.com/reference/random
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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