세 개의 숫자(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:x=(10 100 1000)사람들이 의견에서 관찰했듯이 배열 요소를 개별적으로 초기화하는 대신 배열 리터럴을 사용하는 것이 물론 가능합니다 .

노트 2:배열의 요소 수를 하드 코딩하는 대신 임의의 요소를 추출할 수 있습니다 ${x[$RANDOM%${#x[@]}]}.

답변2

당신이 사용하는 경우세게 때리다(또는다루기 힘든또는크쉬 93) 다음과 같이 할 수 있습니다.

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

또는

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

그것을 할당하다변하기 쉬운

답변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]

관련 정보