Variável escolhida aleatoriamente entre três números (10, 100 e 1000)

Variável escolhida aleatoriamente entre três números (10, 100 e 1000)

É possível ter uma variável que escolha um número aleatório entre três números pré-decididos?

Amostra:

var= 10 or 100 or 1000

Responder1

Use uma matriz para armazenar os valores e escolha entre eles usando a variável integrada $RANDOM. Por exemplo,

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

A qualidade da aleatoriedade não será a melhor possível (leia os bytes /dev/urandompara isso), mas deve ser mais do que suficiente para um script.

Nota 1:Como as pessoas observaram nos comentários, em vez de inicializar os elementos do array individualmente, é claro que pode-se usar um array literal: x=(10 100 1000).

Nota 2:Em vez de codificar o número de elementos na matriz, um elemento aleatório pode ser extraído por ${x[$RANDOM%${#x[@]}]}.

Responder2

Se você estiver usandofesta(ouzshouksh93) você pode simplesmente fazer:

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

ou

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

atribuí-lo avar

Responder3

Você também pode usar o GNU coreutilsshufUtilitário:

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

Usar RANDOMde acordo com as outras respostas é quase certamente mais rápido.

Responder4

Aqui está uma maneira um pouco enigmática:

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

Isso atribuirá o valor aleatório $varconforme necessário. A printfstring de formato é 1%0Nd- isso faz com 0que seja impressa com Nzeros à esquerda, onde Nestará um número inteiro aleatório no intervalo [1,3].

informação relacionada