Skip to content

Latest commit

 

History

History
34 lines (22 loc) · 1.9 KB

File metadata and controls

34 lines (22 loc) · 1.9 KB

Псевдовипадковий генератор

Є багато областей, де нам потрібні випадкові дані.

Одна з них – тестування. Нам можуть знадобитися випадкові дані: текст, числа тощо, щоб добре все перевірити.

У JavaScript ми можемо використовувати Math.random(). Але якщо щось піде не так, ми хотіли б мати можливість повторити тест, використовуючи точно ті самі дані.

Для цього використовуються так звані "сіяні псевдовипадкові генератори". Вони беруть "зерно", перше значення, а потім генерують наступні за допомогою формули, так що те саме насіння дає ту саму послідовність, а отже, весь потік легко відтворюється. Нам потрібно лише згадати зерно, щоб повторити його.

Приклад такої формули, яка генерує рівномірно розподілені значення:

next = previous * 16807 % 2147483647

Якщо ми використаємо 1 як зерно, то значення будуть такими:

  1. 16807
  2. 282475249
  3. 1622650073
  4. ...and so on...

Завдання полягає в тому, щоб створити функцію-генератор pseudoRandom(seed), яка приймає seed і створює генератор з цією формулою.

Приклад використання:

let generator = pseudoRandom(1);

alert(generator.next().value); // 16807
alert(generator.next().value); // 282475249
alert(generator.next().value); // 1622650073