Bash에서 난수를 생성하는 방법은 무엇입니까? Bash에서 범위 내에서 난수를 생성하는 방법은 무엇입니까?

Bash에서 범위 내에서 난수를 생성하는 방법은 무엇입니까?



답변

사용하십시오 $RANDOM. 간단한 쉘 산술과 결합하여 종종 유용합니다. 예를 들어, 1에서 10 사이의 난수를 생성하려면 (포함) :

$ echo $((1 + RANDOM % 10))
3

실제 발생기는 variables.c함수에 brand()있습니다. 이전 버전 은 간단한 선형 생성기였습니다. 버전 4.0은 1985 년 논문을 인용bash발전기 를 사용합니다 . 이는 아마도 의사 난수의 적절한 출처임을 의미합니다. 시뮬레이션에 사용하지는 않지만 (암호화에는 사용하지는 않지만) 기본 스크립팅 작업에는 적합합니다.

심각한 임의의 숫자가 필요한 작업을 수행 중이 /dev/random거나 사용 /dev/urandom가능한 경우 :

$ dd if=/dev/urandom count=4 bs=1 | od -t d

답변

참조하십시오 $RANDOM:

$RANDOM 0-32767 범위의 의사 난수를 반환하는 내부 Bash 함수 (상수 아님)입니다. 암호화 키를 생성하는 데 사용해서는 안됩니다.


답변

shuf (coreutils에서 사용 가능)를 사용할 수도 있습니다 .

shuf -i 1-100000 -n 1

답변

쉘에서 이것을 시도하십시오 :

$ od -A n -t d -N 1 /dev/urandom

여기 -t d에서 출력 형식이 10 진수 부호로 지정되도록 지정합니다. -N 1에서 1 바이트를 읽도록 지시 /dev/urandom합니다.


답변

당신은 또한 awk에서 임의의 숫자를 얻을 수 있습니다

awk 'BEGIN {
   # seed
   srand()
   for (i=1;i<=1000;i++){
     print int(1 + rand() * 100)
   }
}'

답변

$ RANDOM이 있습니다. 나는 그것이 어떻게 작동하는지 정확히 모른다. 그러나 작동합니다. 테스트를 위해 다음을 수행 할 수 있습니다.

echo $RANDOM

답변

나는이 트릭을 좋아한다 :

echo ${RANDOM:0:1} # random number between 1 and 9
echo ${RANDOM:0:2} # random number between 1 and 99