Variable elegida aleatoriamente entre tres números (10, 100 y 1000)

Variable elegida aleatoriamente entre tres números (10, 100 y 1000)

¿Es posible tener una variable que seleccione un número aleatorio entre tres números predeterminados?

Muestra:

var= 10 or 100 or 1000

Respuesta1

Utilice una matriz para contener los valores y elija entre ellos utilizando la variable incorporada $RANDOM. Por ejemplo,

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

La calidad de la aleatoriedad no será la mejor posible (lea los bytes /dev/urandompara eso), pero debería ser más que suficiente para un script.

Nota 1:Como la gente ha observado en los comentarios, en lugar de inicializar los elementos de la matriz individualmente, por supuesto, se puede usar un literal de matriz: x=(10 100 1000).

Nota 2:En lugar de codificar el número de elementos de la matriz, se puede extraer un elemento radom mediante ${x[$RANDOM%${#x[@]}]}.

Respuesta2

Si estas usandointento(ozshoksh93) puedes simplemente hacer:

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

o

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

para asignarlo avar

Respuesta3

También puedes usar las coreutils de GNU.shufutilidad:

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

Sin embargo , usar RANDOMsegún las otras respuestas es casi seguro que es más rápido.

Respuesta4

Aquí hay una forma un poco críptica:

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

Esto asignará el valor aleatorio según $varsea necesario. La printfcadena de formato es 1%0Nd: esto hace 0que se imprima con Nceros a la izquierda, donde Nhabrá un número entero aleatorio en el intervalo [1,3].

información relacionada