쉘을 사용하여 임의의 한 자리 숫자를 생성하는 방법

쉘을 사용하여 임의의 한 자리 숫자를 생성하는 방법

임의의 한 자리 숫자를 생성하는 방법은 무엇입니까?

나는 seq -w 10이것을 활용하여 다음과 같은 결과를 얻었습니다.

01
02
03
04
05
06
07
08
09
10

0에서 10까지 1자리 숫자만 무작위로 선택하는 추가 논리를 어떻게 구현할 수 있습니까?

답변1

shuf -i0-9 -n1

shuf무작위 순열을 생성하고 -i범위 인수를 허용하므로 range 를 제공 0-9하고 -n1like 는 head난수의 첫 번째 숫자만 인쇄합니다.


RANDOM또는 Korn과 같은 쉘의 내장 쉘 변수(ksh, zsh, bash, yash, busybox sh)를 사용할 수 있습니다 .

echo "$((RANDOM % 10))"

하지만RANDOM (에서 man bash)

0에서 32767 사이의 임의의 정수

이는 특정 숫자의 가능성이 약간 낮다는 것을 의미합니다(중요한 경우).

숫자의 경우 0-7이는 사실입니다 100 * 3277 / 32767 ≈ 10.00092 %.

숫자 8합계 의 9경우100 * 3276 / 32767 ≈ 9.99786 %

답변2

0부터 9까지 10개의 "단위 숫자"가 있습니다. (10은 단위 번호가 아닙니다.) 따라서 외부 명령을 사용하지 않고 순수 Bash를 사용하여 이 작업을 수행하려면 다음을 수행할 수 있습니다.

echo $((RANDOM%10))
7

((RND=RANDOM%10))
echo $RND
4

답변3

POSIX적으로:

awk 'BEGIN{srand(); print int(rand()*10)}'

대부분의 awk구현에서는 동일한 초 내에 두 번 호출되면 동일한 숫자가 생성됩니다.

답변4

사용명령은 GNU 유틸리티입니다.

shuf -i 0-9 -n 1

관련 정보