Вы можете использовать генератор случайных чисел, например seedrandom
Как это работает:
Каждый генератор случайных чисел - это только генератор случайных чисел псевдо, то есть здесь нет ничего случайного, даже для Math.random
- это просто какой-то сумасшедший алгоритм, который генерирует числа по заданному входу.
Но javascript заполняет Math своими собственными переменными и не позволяет нам самому заполнять его (как мы можем, например, в c) - вот где появляется seedrandom, это просто простой пользовательский генератор случайных чисел для javascript, который также случается, что строки принимаются как семя (хорошо для ваших нужд).
Мы подаем генератору случайных чисел специальное начальное число (идентификатор пользователя / сеанс), который позволяет нам иметь предсказуемый генератор случайных чисел - например, если первый вызов выдаст 0,2, а второй вызов - 0,5 - мы можем быть уверены, что если пользователь обновит страницу, и мы дадим одно и то же начальное число, первое число всегда будет равно 0,2, а второе число всегда будет равно 0,5.
Как использовать:
Использование довольно просто:
// Make a predictable pseudorandom number generator.
const seedrandom = require('seedrandom');
const myRandom = seedrandom(sessionID);
console.log(myRandom()); // Always 0.9282578795792454
// example
const pickRandomForUser = (items) => {
const predictableRandom = myRandom();
const randomIndex = Math.floor(predictableRandom * items.length);
return items[randomIndex];
}
const numbers = [12, 24, 89, 09, 43, 99];
// will stay the same for each session id, in this order
const firstRand = pickRandomForUser(numbers)// 12
const secondRand = pickRandomForUser(numbers)// 89