﻿# V1057\. Pseudo random sequence is the same at every program run\. Consider assigning the seed to a value not known at compile\-time\.

Анализатор обнаружил подозрительный код, инициализирующий генератор псевдослучайных чисел константным значением\.

```cpp
// C
srand(0);
// C++
std::mt19937 engine(1);
```

Числа, сгенерированные таким генератором, можно предугадать, либо же они будут воспроизводиться снова и снова при каждом запуске программы\.

Чтобы этого избежать, стоит использовать какое\-либо случайное число\. К примеру, можно воспользоваться текущим системным временем:

```cpp
srand(time(0));
```

Но такой подход может вызвать проблемы в многопоточных программах – 'time\(0\)' может вернуть одинаковые значения в разных потоках\. Также стоит учесть, что время может меняться пользователем\.

Начиная с C\+\+11, можно воспользоваться генератором 'std::random\_device', реализующим интерфейс к генератору истинно случайных чисел:

```cpp
std::random_device rd;
std::mt19937 engine(rd());
```

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