В Битрикс есть два класса для генерации случайных данных, и их часто путают. Они предназначены для совершенно разных целей.
1. Bitrix\Main\Security\Random (Для безопасности)
Используйте этот класс, когда нужна непредсказуемость:
- Генерация паролей.
- Создание токенов (CSRF, API-ключи).
- Генерация «соли» для хешей.
Он использует криптографически стойкие источники энтропии.
use Bitrix\Main\Security\Random;
// Случайная строка длиной 10 символов (цифры и латиница)
$password = Random::getString(10);
// Пример: aB3x9Zq1w2
// Строка с использованием спецсимволов (true)
$complexPassword = Random::getString(12, true);
// Случайное число (аналог random_int)
$number = Random::getInt(1, 100);2. Bitrix\Main\Type\RandomSequence (Для воспроизводимости)
Этот класс реализует генератор псевдослучайных чисел (PRNG), который инициализируется зерном (seed).
Используйте его, когда нужна воспроизводимость:
- A/B тестирование (чтобы один и тот же пользователь всегда попадал в одну и ту же группу).
- Генерация детерминированных цветов для аватарок по ID пользователя.
Если вы инициализируете его одним и тем же значением (например, ID пользователя), он всегда будет выдавать одну и ту же последовательность «случайных» чисел.
use Bitrix\Main\Type\RandomSequence;
$userId = 12345;
$rand = new RandomSequence($userId); // Инициализируем ID пользователя
// Получаем "случайное" число от 0 до 100
// Для юзера 12345 оно ВСЕГДА будет одинаковым (например, 42)
$group = $rand->rand(0, 100);
if ($group < 50) {
echo "Вариант А";
} else {
echo "Вариант Б";
}Вывод:
Никогда не используйте RandomSequence для генерации паролей или токенов безопасности — они предсказуемы! Для защиты используйте Security\Random.
Для интерфейсных фишек и A/B тестов — RandomSequence.
Bitrix\Main\Security\Random, Bitrix\Main\Type\RandomSequence, генерация пароля, случайная строка, getNext, getString, random битрикс