@Bizki

Как постоянно проверять значение переменной?

Здравствуйте, возник вот такой вопрос, мы рандомим 2 числа, если эти числа совпали то мы какое-то из этих чисел рандомим заново, но вот вопрос, что делать, если эти числа снова совпадут, мне непонятна сама идея, как это можно реализовать, чтобы у нас рандомились 2 числа пока мы не получим 2 разных значения (понимаю, странный пример, но всё же, надо исключить вероятность выпадения двух одинаковых чисел)
let min = Math.ceil(0);
        let max = Math.floor(1);
        a = Math.floor(Math.random() * (max - min + 1)) + min;
        b = Math.floor(Math.random() * (max - min + 1)) + min;
        // рандомим 2 целых числа

        if (a === b) {
            b = Math.floor(Math.random() * (max - min + 1)) + min;
        }
  • Вопрос задан
  • 213 просмотров
Решения вопроса 1
RAX7
@RAX7
- if (a === b)
+ while (a === b)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Чтобы не повторялись, надо исключить выбранное первое из вариантов для второго.

Если для 1-го значения от min до max,
то для 2-го остаётся уже на 1 меньше: от min до max - 1.
И если получилось значение больше либо равное 1-му, надо добавить 1.
на пальцах
Допустим, нужны два неодинаковых случайных от 0 до 5.
0 1 2 3 4 5
    ^ выпало "2"
для второго остались:
0 1   3 4 5
выбираем случайное из
0 1 2 3 4
и если получилось >= 2
то добавляем 1

0 1 2 3 4
        ^ выпало "4"
добавили 1 получилось 5
Итого, 2 и 5.


Пример реализации
function twoRandom(min, max) {
  if (min > max - 1) throw "min should be less or equal max - 1";

  a = Math.floor(Math.random() * (max - min + 1)) + min;
  b = Math.floor(Math.random() * (max - min)) + min;
  if (b >= a) b = b + 1;

  return [a, b];
}


Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
17 мая 2024, в 22:37
20000 руб./за проект
17 мая 2024, в 22:33
1000 руб./за проект
17 мая 2024, в 22:30
5000 руб./за проект