如何在javascript中生成100000-999999范围内的唯一数字?

我正在开发一个游戏,玩家可以进入房间一起玩。
每个想要进入房间的玩家都必须写下房间号,
因此,我希望数字尽可能小(6位数字)。

由于请求是异步的,因此我需要找到一种分配房间号的方法
并确保只有1个请求会收到它。
(我也可以说后端将来可能需要扩展,
因此它必须是第三方服务)。

此外,我想重复使用“已发布”的数字,
这是已经关闭的房间。

例如:

玩家a打开房间号100
玩家b打开房间号101
玩家a关闭房间。
玩家c打开房间号100

我该如何做呢?

最佳答案

首先定义范围,生成随机Math.floor(Math.random() * range ),然后将它们添加到数组中以将其检查为参考,以防止重复



var range = 100000
var choosenArr = [];
var choosen = 0;
choosen =  Math.floor(Math.random() * range );
if(choosenArr.indexOf(choosen) > -1){
  choosen =  Math.floor(Math.random() * range );
}
choosenArr.push(choosen);

console.log(choosen)
console.log(choosenArr)

10-06 09:37