vak: (Default)
Serge Vakulenko ([personal profile] vak) wrote2025-01-06 04:59 pm

Случайная польза от ИИ

Пишу тестики по работе, понадобилось случайное число в некотором диапазоне. Думаю, дай спрошу у искусственного интеллекта, благо под рукой. Как в Линуксе получить случайное целое число из командной строки? Ответ порадовал: три варианта на выбор, все доселе мне неизвестные. Причём на маке ровно так же работает. 

(1) Из bash:
echo $RANDOM
Если нужно число в диапазоне MIN-MAX, делаем:
echo $(( RANDOM % (MAX - MIN + 1) + MIN ))
(2) Командой shuf:
shuf -i MIN-MAX -n 1
Если требуется несколько чисел, единичку заменяем на количество.

(3) Командой openssl можно создать криптографически надёжное случайное число:
openssl rand -hex 4 | xxd -r -p | head -c 4 | od -An -tu4
Тут генерятся четыре случайных байта, преобразуются в беззнаковое целое и отображаются в десятичном виде.

[personal profile] nz 2025-01-07 01:40 am (UTC)(link)

echo $(( RANDOM % (MAX - MIN + 1) + MIN ))

это не совсем случайное число.

vlad_m: (Default)

[personal profile] vlad_m 2025-01-07 05:23 pm (UTC)(link)
Представьте, что RANDOM ,даёт равномерно распределенное от 0 до 15. 4 бита.
Поделите с остатком на 7, например.
Распределение перестанет быть равномерным.