El shell de Linux implementa múltiples métodos de números aleatorios (fecha, aleatorio, uuid)

  
 

En la vida diaria, a menudo se encuentran números aleatorios, y es muy simple perder los dados, agarrar y robar. Por lo tanto, en programación, realmente no es fácil diseñar un número aleatorio a través de su propio programa. Ahora, una gran cantidad de sistema operativo
kernel proporcionará la api correspondiente, estos parámetros en bruto son para que alguna computadora ejecute información en bruto, como memoria, voltaje, señales físicas, etc., su valor puede garantizarse en un período de tiempo La unica cosa Ok, no voy a hablar sin sentido. Shell scripts ¿Tenemos esos métodos para obtener números al azar? Primero, obtenga números aleatorios a través del tiempo (
fecha)
Esto también lo usamos nosotros. Se puede decir que el tiempo es único y no se repetirá. A partir de esto, podemos obtener el mismo tiempo. Valor unico Adaptado a todos los programas del interior. Ejemplo:

[barlow @ centos6 shell] $ date +% s1287764773 # Obtener marca de tiempo, actual a: 1970-01-01 00:00:00 Segundos separados # Si se usa Hace números aleatorios, y el mismo segundo de datos es el mismo. En el procesamiento del bucle, los subprocesos múltiples básicamente no pueden cumplir los requisitos. [barlow @ centos6 shell] $ date +% N738710457 # Obtenga los datos en nanosegundos de la hora actual, con una precisión de una centésima de segundo. # Esto es bastante exacto, incluso en una gran cantidad de CPU, una gran cantidad de bucles, en el mismo segundo, es difícil ver el mismo resultado, pero habrá muchas colisiones repetidas en diferentes tiempos [barlow @ centos6 shell] $ fecha +% s% N1287764807051101270 # Se puede decir que esto es perfecto, se agregó una marca de tiempo, más nanosegundos.

A través de la descripción anterior, úselo para hacer la base del número aleatorio, luego veremos cómo obtener un dato Consigue un número aleatorio.

#! /bin /sh # Escriba una función aleatoria, llame al método random min max # para obtener el entero aleatorio directamente en min y max # Obtenga el valor de retorno del número aleatorio, actualice el valor después de calcular el número aleatorio en la función de shell Función aleatoria () {min = $ 1; max = $ 2- $ 1; num = $ (fecha +% s +% N); ((retnum = num% max + min)); # Para realizar la operación restante, echo $ retnum; # Print e imprimimos el valor por eco, y luego obtenemos la función, stdout puede obtener el valor # Hay un retorno, define la variable de precio completo, luego la función cambia el contenido, lee afuera} # obtiene 1-10 seq datos para i En {1..10}; doout = $ (random 2 10000); echo $ i, " 2-10000 ", $ out; done;

Mire los resultados:

[barlow @ centos6 shell] $ sh testrandom.sh1,2-10000,56002,2-10000,52953,2-10000,34324,2-10000,31485,2-10000,90416,2-10000,42907 , 2-10000, 23808, 2-10000, 90099, 2-10000, 547410, 2-10000, 3664

En un bucle, los valores son diferentes. Este es nuestro método común, adaptarnos a varios idiomas, es un algoritmo general, incluso si el servidor no proporciona la misma marca de datos única en un momento determinado, también podemos hacer su propio número pseudoaleatorio a través de este método. Aquí hay una manera más simple, no lo hagas tú mismo. 2
, a través de variables internas del sistema
($ RANDOM)
De hecho, Linux ha proporcionado una variable de entorno del sistema, que es directamente un número aleatorio, jaja, acabo de enterarme El método no es en vano! !

[barlow @ centos6 shell] $ echo $ RANDOM10918 [barlow @ centos6 shell] $ echo $ RANDOM10001 # 2 visitas consecutivas, el resultado es diferente, estos datos son un número entero inferior o igual a 5 dígitos

Puede haber preguntas. ¿Cómo obtienes más de 5 números aleatorios? Oh, agregue un entero fijo de 10 dígitos y luego haga el resto, igual que en el Ejemplo 1. El siguiente ejemplo es lo que hicimos por nuestra cuenta.

Copyright © Conocimiento de Windows All Rights Reserved