﻿# V6109\. Potentially predictable seed is used in pseudo\-random number generator\.

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

**Случай 1\.**

Создание нового объекта типа 'Random' каждый раз, когда требуется случайное значение\. Это неэффективно и может привести к получению чисел, которые не являются достаточно случайными, в зависимости от JDK\.

Рассмотрим пример:

```cpp
public void test() {
  Random rnd = new Random();
}
```

Для большей эффективности и случайности распределения создайте один экземпляр класса 'Random', сохраните его и используйте повторно\.

```cpp
static Random rnd = new Random();

public void test() {
  int i = rnd.nextInt();
}
```

**Случай 2\.**

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

```cpp
public void test() {
  Random rnd = new Random(4040);
}
```

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

```cpp

static Random rnd = new Random(System.currentTimeMillis());

public void test() {
  int i = rnd.nextInt();
}
```