makson__js
@makson__js
веб

Как сузить диапазон генерации случайных чисел?

мне нужно вывести 10 случайных чисел в диапазоне от 5 до 15, но чтобы при каждом выводе следующее число было не меньше предыдущего, т.e чтобы сначала выводилось от 5 до 15, потом от 6 до 15, от 7 до 15 и тд.
  • Вопрос задан
  • 242 просмотра
Пригласить эксперта
Ответы на вопрос 2
AshBlade
@AshBlade
Просто хочу быть счастливым
Появилась идея алгоритма (по-моему у Кнута видел нечто подобное).
Идея следующая:
- Нужно сгенерировать N чисел
- В диапазоне от L до R

Тогда запускаем рекурсивную функцию:
- Вход: начало диапазона (Start), конец диапазона (End), оставшееся кол-во чисел (Left)

Тело функции:
1. Берем следующее число из указанного диапазона = Current
2. Уменьшаем оставшееся число на 1
3. Вызываем эту же функцию, но с аргументами: начало диапазона = Current + 1, конец диапзона = End - Left, оставшееся число аргументов = Left - 1

Изначально запускаем с аргументами: L, R - N, N.

Можно заметить, что с каждой итерацией правая граница сдивигается на 1 - всегда будет возможность получить следующее число, даже если подойдем вплотную
Ответ написан
Комментировать
@rPman
Для каждого следующего числа проверять, не меньше ли оно предыдущего, и если меньше, то повторять попытку получения случайного числа

Случайные числа на интервале на javascript получают с помощью Math.Random()*(максимальное число-минимальное) плюс минимальное. По ссылке пример с math.floor, округляющий число до целого, но осторожно, в этом случае максимальное число никогда не будет получено... возможно лучше тут использовать math.round
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы