Вопрос или проблема
Я хочу скрипт на JavaScript, который случайным образом выбирает либо value1, либо value2, не выбирая между двумя значениями, а просто реальные значения.
Спасибо!!!!
Функция Math.random
[MDN] выбирает случайное значение в интервале [0, 1)
. Вы можете использовать это, чтобы выбирать значения случайным образом.
var chosenValue = Math.random() < 0.5 ? value1 : value2;
Math.round(Math.random())
возвращает 0 или 1, каждое значение примерно половину времени.
Вы можете использовать это, как true или false, ‘орел’ или ‘решка’, или как индекс массива из 2-х элементов –
['true','false'][Math.round(Math.random())]
вернет ‘true’ или ‘false’…
~~(Math.random()*2) ? true : false
Это возвращает либо 0, либо 1. “~~” — это оператор побитового отрицания. В основном удаляет десятичную часть. Иногда полезно.
Предполагается, что это быстрее, чем Math.floor()
Не знаю, насколько это быстро в целом. Я опубликовал это из любопытства 🙂
parseInt(Math.random() * 2) ? true : false;
Ответ или решение
Чтобы случайным образом выбрать между двумя числами в JavaScript, вы можете воспользоваться функцией Math.random()
, которая генерирует случайное число в интервале [0, 1). Вы можете использовать это число для принятия решения, какое из двух значений выбрать. Существует несколько методов, которые можно применить для этой задачи. Ниже приведены два наиболее распространенных подхода.
Способ 1: Использование тернарного оператора
Вы можете использовать тернарный оператор для выбора одного из двух значений, основываясь на результатах Math.random()
. Например:
var value1 = 10;
var value2 = 20;
var chosenValue = Math.random() < 0.5 ? value1 : value2;
console.log(chosenValue);
В этом примере, если Math.random()
возвращает число меньше 0.5, будет выбрано value1
, иначе будет выбрано value2
.
Способ 2: Использование округления
Другой способ заключается в использовании функции Math.round()
для получения случайного значения 0 или 1:
var value1 = 10;
var value2 = 20;
var chosenValue = Math.round(Math.random());
chosenValue = chosenValue === 0 ? value1 : value2;
console.log(chosenValue);
Здесь Math.round(Math.random())
возвращает либо 0, либо 1, что позволяет определить, нужно ли выбрать value1
или value2
.
Дополнительные методы
Можно также использовать массив для хранения возможных значений и выбирать значение по индексу:
var values = [10, 20];
var chosenValue = values[Math.round(Math.random())];
console.log(chosenValue);
Либо, используя битовые операции, которые могут показаться более производительными в некоторых контекстах:
var value1 = 10;
var value2 = 20;
var chosenValue = ~~(Math.random() * 2) ? value2 : value1;
console.log(chosenValue);
Заключение
Все вышеперечисленные методы позволят вам случайным образом выбрать между двумя значениями. Выбор конкретного метода может зависеть от ваших предпочтений по читаемости кода или производительности. Надеюсь, это поможет вам решить вашу задачу!