¿Es posible tener una variable que elija un número aleatorio de tres números predeterminados?
Muestra:
var= 10 or 100 or 1000
shell-script
variable
random
Espen Larsen
fuente
fuente
Respuestas:
Use una matriz para contener los valores y elija entre ellos usando la variable incorporada
$RANDOM
. Por ejemplo,La calidad de la aleatoriedad no será la mejor posible (lea los bytes
/dev/urandom
para eso), pero debería ser más que suficiente para un script.Nota 1: Como ya se ha observado en los comentarios, en lugar de inicializar los elementos de la matriz de forma individual una lata de utilizar un curso Litteral matriz:
x=(10 100 1000)
.Nota 2: en lugar de codificar el número de elementos en la matriz, se puede extraer un elemento Radom
${x[$RANDOM%${#x[@]}]}
.fuente
x=(10 100 1000)
crea una matriz de un literal en bash, esto sería más legible y más idiomáticox[0]=10 # This sets the first value of x to ten. Ten is the number of fingers that humans have (excepting birth defects or mutilation). It is also the sum of 9 and 1, or product of 5 and 2. Ten is not prime. A traditional Christmas gift is ten lords a-leaping.
algo así?Si está utilizando bash (o zsh o ksh93 ) puede hacer lo siguiente:
o
para asignarlo a var
fuente
También puede usar la
shuf
utilidad GNU coreutils :Sin
RANDOM
embargo, usar según las otras respuestas es casi seguro.fuente
fuente
Aquí hay una forma ligeramente críptica:
Esto asignará el valor aleatorio a
$var
lo requerido. Laprintf
cadena de formato es1%0Nd
: esto hace0
que se imprima conN
ceros a la izquierda, dondeN
habrá un número entero aleatorio en el intervalo[1,3]
.fuente