如何在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)