source

Bash 쉘 스크립트에서 1~10 사이의 난수 생성

nicesource 2023. 4. 9. 21:42
반응형

Bash 쉘 스크립트에서 1~10 사이의 난수 생성

Bash Shell Script에서 1~10의 난수를 생성하는 방법은 무엇입니까?

그럴까?$(RANDOM 1+10)?

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

편집. 코멘트에 따라 괄호를 괄호로 변경.http://web.archive.org/web/20150206070451/http://islandlinux.org/howto/generate-random-numbers-bash-scripting

가장 간단한 해결책은 gnu와 범위를 직접 지정할 수 있는 도구를 사용하는 것입니다. shuf

shuf -i1-10 -n1

사용하고 싶은 경우$RANDOM0의 마지막 8개의 숫자를 버리는 것이 더 정확할 것입니다.32767, 0으로 처리하면...32759, 0을 복용한 이후로...32767 mod 10은 다음과 같은 분포를 얻을 수 있습니다.

0-8 each: 3277 
8-9 each: 3276

그래서 조금 느리지만 좀 더 정확하게 말하면

while :; do ran=$RANDOM; ((ran < 32760)) && echo $(((ran%10)+1)) && break; done 

bash를 사용하여 난수를 생성하려면 $RANDOM 내부 Bash 함수를 사용합니다.$RANDOM을 사용하여 암호화 키를 생성해서는 안 됩니다.$RANDOM은 1970년 이후 경과된 초수로 정의된 현재 프로세스 ID(PID)와 현재 시간/날짜를 사용하여 생성됩니다.

 echo $RANDOM % 10 + 1 | bc

/dev/urandom을 사용할 수도 있습니다.

grep -m1 -ao '[0-9]' /dev/urandom | sed s/0/10/ | head -n1

범위 내에서 생성하려면: {0,..,9}

r=$(( $RANDOM % 10 )); echo $r

범위 내에서 생성하는 방법: {40, ..,49)

r=$(( $RANDOM % 10 + 40 )); echo $r

다음은 $RANDOM도 /dev/urandom도 사용할 수 없는 의사 랜덤 생성기의 예입니다.

echo $ ( date + % S )| grep - o . $ | sed s/0/10/

언급URL : https://stackoverflow.com/questions/8988824/generating-random-number-between-1-and-10-in-bash-shell-script

반응형