Некоторое время назад я использовал seq-подобный инструмент для печати последовательности псевдослучайных генерируемых чисел в стандартный вывод. Вы можете указать диапазон, семя, количество образцов и многое другое.
Я только что забыл название этого инструмента. Может кто-нибудь мне помочь?
Возможно, вы знаете даже более продвинутый инструмент, который, например, поддерживает различные распределения вероятностей или даже генерацию последовательности случайных слов в разных алфавитах и длинах / символах.
shell
command-line
maxschlepzig
источник
источник
Если вы не против написать небольшой скрипт для того, что вам нужно, я бы порекомендовал сделать это в R , системе статистики с открытым исходным кодом.
Например, рассмотрим эту строку, чтобы получить список из 100 распределенных по Гауссу чисел:
Давайте разберемся с этим.
Стандартная
R
команда вводит вас в интерактивную среду программирования, что хорошо, если вы пытаетесь понять, как сделать что-то вручную или строите что-то пошагово, но из вашего вопроса звучит так, будто вам нужен только список чисел. отправить в другую программу. Поэтому вместо этого мы используемRscript
, который ведет себя больше как традиционный интерпретатор сценариев Unix: вы можете передать ему имя файла, содержащего сценарий R, или использовать стандартный-e
флаг для передачи всего текста программы в командной строке.rnorm()
является функцией R для получения списка случайных чисел с «нормальным» или гауссовым распределением. Требуется до трех параметров, только первый из которых требуется, сколько цифр вы хотите. Мы запросили 100. Взяв значения по умолчанию для двух других необязательных параметров, мы получим среднее значение 0 и стандартное отклонение 1.Арифметика после этого просто демонстрирует классную особенность языка R: вы можете выполнять арифметику для целых таблиц данных, матриц и т. Д. Так же легко, как скалярное значение в более типичном языке. Я умножил все сгенерированные значения на 100 и добавил к ним 100 только потому, что могу. Поскольку R - полноценный язык программирования, нет предела тому, что вы можете сделать с этим списком чисел. Это преимущество использования такой системы вместо команды фиксированного назначения, подобной
jot
.Мы передаем результат этой предыдущей операции
write()
функции, которая по умолчанию записывает данные в файл, но мы переопределяем это, передавая пустую строку для второго параметра, имени файла, поэтому она записывает таблицу в терминал вместо. Следующий параметр,1
просто говорит, что мы хотим, чтобы наш вывод был в формате с одним столбцом.R имеет много других функций генерации случайных чисел, встроенных в базовую систему. Например, мы можем имитировать
jot
команду в ответе lcpriani с помощью этого скрипта:Здесь мы используем,
runif()
чтобы получить 10 равномерно распределенных случайных чисел от 12 до 27. Подобно томуrnorm()
, как мы использовали выше, эта функция возвращает значения с плавающей запятой, поэтому мы должны получитьround()
их до ближайших целочисленных значений перед записью их на экран.R также имеет богатый набор дополнений в CRAN , репозитории пакетов, смоделированном в CPAN Perl. Тот, который вас может заинтересовать, называется просто случайным , который действует как интерфейс к random.org , сервису, который возвращает истинные случайные числа, генерируемые атмосферным шумом.
R - это полноценная среда программирования, поэтому может не потребоваться выводить ваши числа из R в текстовом формате. Возможно, вам удастся полностью решить вашу проблему в R. Дайте ей шанс.
источник
jot
команды lcpriani в ответ выше. Что касается ограничения значений дляrnorm()
, это не так, как нормальное распределение работает. Если вы возьмете значение по умолчанию 0, а SD - 1, тогда 1000 все еще будет возможным возвращаемым значением, это просто невероятно. R позволил бы вам написать что-то, что фиксировало бы значения, чтобы удалить вещи вне заданного диапазона, но тогда вы, вероятно, неправильно использовали бы нормальное распределение.