Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在范围内生成唯一的数字?_Javascript_Synchronization - Fatal编程技术网

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>