세 숫자(10, 100, 1000) 중에서 무작위로 선택된 변수

세 숫자(10, 100, 1000) 중에서 무작위로 선택된 변수

미리 결정된 세 개의 숫자 중에서 난수를 선택하는 변수를 가질 수 있나요?

견본:

var= 10 or 100 or 1000

답변1

배열을 사용하여 값을 보관하고 내장 변수를 사용하여 그 중에서 선택합니다 $RANDOM. 예를 들어,

x[0]=10     # One decade
x[1]=100    # One century
x[2]=1000   # One millennium

for ((i=1; i < 20; ++i)); do echo -n " ${x[$RANDOM%3]}"; done; echo
1000 10 10 10 10 100 10 100 100 10 10 100 100 100 10 1000 1000 1000 10

임의성의 품질은 가능한 최고는 아니지만(바이트를 읽으 /dev/urandom려면) 스크립트에 충분할 것입니다.

참고 1:사람들이 주석에서 관찰했듯이 배열 요소를 개별적으로 초기화하는 대신 배열 lital: 을 사용할 수 있습니다 x=(10 100 1000).

노트 2:배열의 요소 수를 하드 코딩하는 대신 ${x[$RANDOM%${#x[@]}]}.

답변2

당신이 사용하는 경우세게 때리다(또는zsh또는ksh93) 그냥 할 수 있습니다 :

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

또는

var=$((10**($RANDOM%3+1)))

그것을 할당하다var

답변3

GNU coreutils를 사용할 수도 있습니다.shuf공익사업:

a=$(shuf -n1 -e 10 100 1000)

RANDOM그러나 다른 답변에 따라 사용하는 것이 거의 확실히 빠릅니다.

답변4

약간 비밀스러운 방법은 다음과 같습니다.

printf -v var '1%0*d' $(( RANDOM % 3 + 1 )) 0

$var그러면 필요에 따라 임의의 값이 할당됩니다 . 형식 printf문자열은 1%0Nd- 앞에 0이 붙은 상태 0로 인쇄됩니다 . 여기서는 간격의 임의의 정수입니다 .NN[1,3]

관련 정보