Javascript 如何在范围内生成唯一的数字?
如何在Javascript 如何在范围内生成唯一的数字?,javascript,synchronization,Javascript,Synchronization,如何在javascript中生成100000-999999范围内的唯一数字 我正在制作一个游戏,玩家可以进入房间一起玩。 每个想要进入房间的玩家都必须写下房间号, 因此,我希望数字尽可能小(6位) 由于请求是异步的,我需要找到一种分配房间号的方法 并确保只有一个请求将收到它。 (我还可以说,后端可能需要在未来扩展, 因此,它必须是第三方服务) 此外,我希望重用“已发布”的数字, 哪些是已经关闭的房间 例如: 玩家a打开房间号100。 玩家b打开房间号101。 播放器a关闭房间。 玩家c打开房间号
javascript
中生成100000-999999范围内的唯一数字
我正在制作一个游戏,玩家可以进入房间一起玩。每个想要进入房间的玩家都必须写下房间号,
因此,我希望数字尽可能小(6位) 由于请求是异步的,我需要找到一种分配房间号的方法
并确保只有一个请求将收到它。
(我还可以说,后端可能需要在未来扩展,
因此,它必须是第三方服务) 此外,我希望重用“已发布”的数字,
哪些是已经关闭的房间 例如: 玩家
a
打开房间号100
。
玩家b
打开房间号101
。
播放器a
关闭房间。
玩家c
打开房间号100
我该怎么做呢?首先定义范围,生成random
Math.floor(Math.random()*range)
然后将它们添加到数组中,以将其作为引用进行检查,以防止重复
var范围=100000
var choosenArr=[];
var-choosen=0;
choosen=Math.floor(Math.random()*范围);
如果(选择数组索引of(选择)>-1){
choosen=Math.floor(Math.random()*范围);
}
选择开始推送(选择);
console.log(choosen)
console.log(choosenArr)
使用最大值调用此方法
function getRandomInt(max) {
return Math.floor(Math.random() * Math.floor(max));
}
console.log(getRandomInt(3));
// expected output: 0, 1 or 2
console.log(getRandomInt(1));
// expected output: 0
console.log(Math.random());
//预期输出:介于0和1之间的数字
function getRandomArbitrary(min, max) {
return Math.random() * (max - min) + min;
}
var closer=[];
var room=Math.random()*899999+100000;
对于(var i=0;i
您应该添加您尝试的代码
但例如,在您拥有登录代码之后:
<script>
var room =[];
var user_name='a'; //have logged in user's name
function sel_room(){
var i=document.form.room.value;
if(isNaN(i)==true || i<100000 || i>=1000000)
{
alert("please select between 100000-999999");
return;
}
if(document.form.btn.value == 'Exit')
{
room[i]=null;
document.form.btn.setAttribute("value","Go");
document.form.room.removeAttribute("disabled");
return;
}
if(room[i]==null)
{
room[i]=user_name;
alert("you'r in room " + i);
document.form.room.setAttribute("disabled","disabled");
document.form.btn.setAttribute("value","Exit");
}
else
alert("already used! please select another one");
}
</script>
<form name="form">
<div>
inser room number:
<input type="text" size="20" name="room" />
<br />
<input type="button" name="btn" value="Go" onclick="sel_room()" />
</div>
</form>
var房间=[];
var user_name='a'//已以用户名登录
功能选择室(){
var i=document.form.room.value;
如果(isNaN(i)=真| | i=1000000)
{
警报(“请在100000-999999之间选择”);
返回;
}
如果(document.form.btn.value=='Exit')
{
房间[i]=空;
document.form.btn.setAttribute(“value”、“Go”);
文件.表格.文件室.删除属性(“禁用”);
返回;
}
如果(房间[i]==null)
{
房间[i]=用户名;
警惕(“你在房间里”+i);
document.form.room.setAttribute(“禁用”、“禁用”);
document.form.btn.setAttribute(“值”、“退出”);
}
其他的
警报(“已使用!请选择另一个”);
}
室内房间号:
您现在的代码是什么?你已经试过什么了?您正在使用数组还是对象?等等。请尽量说得更具体些。我看不出更多的细节会有什么帮助。。这是一个一般性的问题,就像kahoot代码>生成房间numbers@JonasW. 完成;)
<script>
var room =[];
var user_name='a'; //have logged in user's name
function sel_room(){
var i=document.form.room.value;
if(isNaN(i)==true || i<100000 || i>=1000000)
{
alert("please select between 100000-999999");
return;
}
if(document.form.btn.value == 'Exit')
{
room[i]=null;
document.form.btn.setAttribute("value","Go");
document.form.room.removeAttribute("disabled");
return;
}
if(room[i]==null)
{
room[i]=user_name;
alert("you'r in room " + i);
document.form.room.setAttribute("disabled","disabled");
document.form.btn.setAttribute("value","Exit");
}
else
alert("already used! please select another one");
}
</script>
<form name="form">
<div>
inser room number:
<input type="text" size="20" name="room" />
<br />
<input type="button" name="btn" value="Go" onclick="sel_room()" />
</div>
</form>