Как я могу случайно в awk. В bash есть:

echo $((RANDOM%(32-12+1)+12))

Есть ли в awk функция, которая дает тот же результат?

1 ответ1

0

Да, это называется rand(), руководство гласит:

Rand ()

Возвращает случайное число N между 0 и 1, такое, что 0 ≤ N <1.

Тем не менее, будьте осторожны со следующим предостережением:

ВНИМАНИЕ: В большинстве реализаций awk, включая gawk, rand() начинает генерировать числа из одного и того же начального номера или seed при каждом запуске awk. Таким образом, программа генерирует одинаковые результаты каждый раз, когда вы ее запускаете. Числа являются случайными в течение одного прогона awk, но предсказуемы от прогона к прогону. Это удобно для отладки, но если вы хотите, чтобы программа каждый раз использовала разные вещи, вы должны изменить начальное значение на значение, которое отличается при каждом запуске. Для этого используйте srand().

В руководстве еще раз говорится:

srand([выражение])

Использует expr в качестве нового начального числа для генератора случайных чисел. Если expr не указан, используется время суток. Возвращаемое значение - это предыдущее начальное число для генератора случайных чисел.

Редактировать:

Чтобы ответить на ваш вопрос, вторая ссылка выше дает почти решение вашего запроса. Вы можете изменить его как:

  function randint(n,m)
  {
       return int(n+ (n-m) * rand())
  }

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .