Генерация случайных boolean в JavaScript: оптимальные методы

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для генерации случайного булева значения с равной вероятностью получить true и false, используйте выражение Math.random() < 0.5:

JS
Скопировать код
const randomBool = Math.random() < 0.5;
// Это аналог подбрасывания монетки, но без самой монеты

Метод использует функцию Math.random(), которая генерирует число в диапазоне от 0 до <1, обеспечивая таким образом равные шансы получить true или false.

Кинга Идем в IT: пошаговый план для смены профессии

Регулирование вероятностей

Вы можете изменить вероятность выпадения true по отношению к false, просто скорректировав число:

JS
Скопировать код
const likelyTrue = Math.random() < 0.75;
// Теперь вероятность получить 'true' составляет 75%. Это почти как чихнуть при аллергии!

А для случайного выбора можно использовать библиотеку lodash:

JS
Скопировать код
const randomBool = _.sample([true, false]);
// Функция _.sample из lodash выбирает между true и false, словно это мороженое!

Создание безопасных случайных булевых значений

Если вам требуется высокая степень безопасности, используйте функцию crypto.getRandomValues():

JS
Скопировать код
const secureRandomBool = (crypto.getRandomValues(new Uint8Array(1))[0] & 1) === 1;
// Это надёжное булево значение, не уступающее по надёжности коду шпионских агентов!

Лучшие практики для ИИ

Если ваши алгоритмы содержат элементы искусственного интеллекта (ИИ) и вам необходима контролируемая случайность, следующий подход будет весьма уместен:

JS
Скопировать код
var AIrandomBool = () => Math.random() < 0.5; // Непредсказуемость на высшем уровне!

Делаем код простым с помощью Math.round

Если вы сторонник простых решений, вот ещё один элегантный вариант:

JS
Скопировать код
var randomBoolean = !Math.round(Math.random());
// Прекрасная загадка: истина это или ложь? Мы никогда не узнаем!

Визуализация

Воображайте, что вы бросаете монету, но без самой монеты:

JS
Скопировать код
var result = Math.random() < 0.5; // Вращайте рулетку!

В итоге: либо "Орёл", либо "Решка":

Markdown
Скопировать код
Random < 0.5: 🎲👉💰 Орёл (true)
Random ≥ 0.5: 🎲👉💰 Решка (false)

Два исхода одной математической функции. Добро пожаловать в мир JavaScript! 🔄

Эффективное использование

Производительность и читаемость – важные аспекты. Вот примеры эффективного использования случайности в ваших JS скриптах:

JS
Скопировать код
// Выбор направления
const direction = Math.random() < 0.5 ? 'left' : 'right';
// Где же идти? Не знаю, позволь JavaScript решить!

// Случайные действия в циклах
for(let i = 0; i < 10; i++) {
    if(getRandomBool()) doSomething();
}
// Каждый день жизни – новый цикл и новые возможности.

// Безопасная генерация случайных значений в Node.js
const crypto = require('crypto');
const randomBoolean = crypto.randomInt(0, 2) === 1;
// Непредсказуемость на уровне победителя премии "Оскар"!

// Динамическое изменение интерфейса, например, класса CSS
element.classList.toggle('active', Math.random() < 0.5);
// Сайт, который меняется при каждом моргании? Это в ваших руках!

// Рандомизация в игровых событиях
if (Math.random() < 0.25) {
    spawnExtraLife();
}
// Овладей искусством внезапного создания!

Полезные материалы

  1. Math.random() – JavaScript | MDN: Подробнее о функции Math.random().
  2. javascript – Генерация случайного булевого значения в JS – Stack Overflow: Обсуждение генерации случайных булевых значений в JS.
  3. JavaScript Random: Абсолютно всё о Math.random() от W3Schools.
  4. Как сгенерировать случайный цвет в JavaScript | CSS-Tricks: Статья не о цветах, а о случайности.
  5. Случайное целое число от min до max: Помните, как на калькуляторе генерировать случайное число? Тот же принцип здесь.
  6. Crypto | Node.js v21.6.1 Documentation: Если необходим булевый результат, надёжный, как ваш банковский счёт.
Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей
Какое выражение используется для генерации случайного булева значения с равной вероятностью получить true или false?
1 / 5