Получить случайное целое число между двумя заданными значениями, которое можно посеять - PullRequest
1 голос
/ 02 апреля 2019

Я пытаюсь сгенерировать случайное целое число от 1 до 25 на нескольких разных устройствах, но хочу, чтобы результаты были одинаковыми без необходимости отправлять его по сети.

Я думал об использованииотметка времени часов: минуты как начальное число, но не могу понять, как получить случайно сгенерированное число, которое использует начальное число И, между двумя значениями.

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

1 Ответ

1 голос
/ 02 апреля 2019

Пример из библиотеки, которую вы связали - кажется, работает (, хотя я отредактировал его, чтобы ограничить его до определенного диапазона ).

const randGeneratorFrom = seed => {
  const generator = new Math.seedrandom(seed)
  return (min, max) => Math.floor(generator() * max) + min
}

const now = new Date();
const seed = [now.getUTCHours(), now.getUTCMinutes()].join(':')
const rand = randGeneratorFrom(seed)

// results will be the same for the given hour:minute
console.info(seed)

console.info(rand(1, 25))
console.info(rand(1, 25))
console.info(rand(1, 25))
console.info(rand(1, 25)) 
<script src="//cdnjs.cloudflare.com/ajax/libs/seedrandom/3.0.1/seedrandom.min.js">
</script>
...