获取两个可播种的给定值之间的随机整数

时间:2019-04-02 15:18:00

标签: javascript random-seed

我正在尝试在一些不同的设备上生成一个介于1到25之间的随机整数,但是希望结果是相同的,而不必通过网络发送。

我曾考虑将小时:分钟的时间戳用作种子,但无法弄清楚如何获得一个使用种子AND的随机生成的数字,且该数字介于两个值之间。

我看过this,但是每当我尝试生成一个值时,它只会将种子作为字符串返回给我,即使我可以使用它,我仍然需要将种子应用于限制在两个值之间的随机生成器。

1 个答案:

答案 0 :(得分:1)

您所链接的库中的示例似乎可行(尽管我已对其进行了编辑,以便将其限制在一定范围内。)

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>