Как я могу генерировать уникальные числа в диапазоне 100000 - 999999 в javascript
?
Я создаю игру, в которой игроки могут входить в комнаты, чтобы играть вместе.
Каждый игрок, который хочет войти в комнату, должен записать номер комнаты,
поэтому я хочу, чтобы числа были как можно меньше (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)
Вы должны добавить свой код, который вы пробовали
но, например, после того, как у вас есть код для входа в систему:
<script>
var room =[];
var user_name='a'; //have logged in user 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>
Используйте 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;
}
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;
}
}
kahoot!
генерировать номера комнат