Как генерировать уникальные числа в диапазоне? - PullRequest
0 голосов
/ 11 мая 2018

Как я могу генерировать уникальные числа в диапазоне 100000 - 999999 в javascript?

Я строю игру, в которой игроки могут входить в комнаты, чтобы играть вместе.
Каждый игрок, который хочетвойти в комнату, нужно написать номер комнаты,
, поэтому я хочу, чтобы числа были как можно меньше (6 цифр).

Поскольку запросы асинхронные, мне нужно найти способ выделитьномер комнаты
и убедитесь, что его получит только 1 запрос.
(я также могу поспорить, что бэкэнд может понадобиться в будущем,
, поэтому он должен быть сторонним сервисом).

Более того, я хочу повторно использовать «освобожденные» номера,
, которые являются закрытыми комнатами.

Например:

Игрок a открыть номер комнаты 100.Игрок b открывает номер комнаты 101.Игрок a закрыл комнату.Игрок c открывает номер комнаты 100.

Как мне это удается?

Ответы [ 4 ]

0 голосов
/ 11 мая 2018

Вы должны добавить свой код, который вы пробовалино, например, после того, как у вас есть код для входа в систему:

    <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>
0 голосов
/ 11 мая 2018

Используйте значение Max для вызова этого метода.

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;
}
0 голосов
/ 11 мая 2018
var closer = [];
var room = Math.random()*899999+100000;
for(var i = 0; i < closer.length; i++){
  if(closer[i] == room){
    var room = Math.random()*899999+100000;
    i = 0;
  }
}
0 голосов
/ 11 мая 2018

Сначала вы определяете свой диапазон, генерируете случайные значения 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...