Resumen Los números pseudoaleatorios se utilizan ampliamente en el diseño de software. Este artículo presenta los principios generales de la generación de números pseudoaleatorios y el uso de la clase Random y sus métodos proporcionados en ASP.NET Framework para generar números aleatorios en varios rangos que cumplen con diversos requisitos. Finalmente, combinado con el formulario de control Web, se explica la aplicación de números aleatorios en ASP.NET en el diseño de software.
Palabras clave ASP.NET; generación de números pseudoaleatorios; Web;
Los números aleatorios se utilizan ampliamente en el diseño de software, especialmente en los campos de simulación y prueba de entornos prácticos. Para lograr secuencias verdaderamente aleatorias, las personas han utilizado muchos métodos físicos primitivos para generar secuencias distribuidas uniformemente que cumplan con la precisión (número de bits) dentro de un cierto rango. Sus desventajas son: velocidad lenta, baja eficiencia y requiere una gran cantidad de almacenamiento. espacio, y no estar disponible, etc. Para satisfacer las necesidades de la investigación en simulación por computadora, la gente recurre a la investigación sobre el uso de algoritmos para generar secuencias pseudoaleatorias que simulen varias distribuciones de probabilidad. Los números pseudoaleatorios se refieren a números aleatorios generados mediante fórmulas matemáticas de recursividad. Desde un punto de vista práctico, la forma más sencilla y natural de obtener dichos números es utilizar un generador de números aleatorios proporcionado por una biblioteca de lenguajes informáticos. Los diferentes entornos de desarrollo proporcionan diferentes funciones y métodos para generar números aleatorios. Normalmente, genera una variable pseudoaleatoria cuyos valores se distribuyen uniformemente entre 0 y 1.
Un generador de números aleatorios es
un método para generar números aleatorios en una computadora, que a menudo utiliza la siguiente fórmula:
El programa que utiliza esta fórmula para generar una secuencia de números aleatorios a1, a2,... de 0 a 65536 se llama generador de números aleatorios armónicos multiplicativos de 232 pasos. Entre ellos, b, cyd son números enteros positivos, y d se denomina semilla de la secuencia aleatoria generada por la fórmula.
Se puede ver en esta fórmula que una vez que se determinan los parámetros b, cyd, también se determina la secuencia aleatoria generada. Esta secuencia que solo satisface la aleatoriedad hasta cierto punto se llama número pseudoaleatorio.
A continuación se muestra un ejemplo de un generador de números aleatorios. Entre ellos, la función random_seed permite al usuario seleccionar la semilla de un número aleatorio. Cuando el parámetro formal d=0, la hora actual del sistema se utiliza como semilla del número aleatorio cuando d≠0, se selecciona d como; semilla; la función aleatoria se basa en la semilla dada, calcula una nueva semilla y genera un nuevo número aleatorio en el rango de bajo a alto.
#definir MULTIPLICADOR 0x015A4E35L
#define INCREMENT 1
void random_seed(d larga sin firmar){
if (d==0)semilla = tiempo(0);
otra semilla = d;}
int sin signo aleatorio (sin signo largo bajo, sin signo largo alto)
{
semilla = MULTIPLICADOR * semilla + INCREMENTO;
retorno ((semilla>>16)% (alto-bajo) + bajo);
}
}
El mecanismo de generación de números pseudoaleatorios en ASP.NET
hace imposible que la computadora genere números completamente aleatorios. El llamado generador de números aleatorios utiliza un determinado algoritmo para realizar operaciones complejas en semillas aleatorias preseleccionadas y utiliza los resultados generados para simular aproximadamente números completamente aleatorios. Este tipo de número aleatorio se denomina número pseudoaleatorio. Los números pseudoaleatorios se eligen de un conjunto finito de números con igual probabilidad. Los números elegidos no son completamente aleatorios, pero sí lo suficientemente aleatorios a efectos prácticos.
1. Funciones integradas de VB.NET
Los programas ASP.NET pueden utilizar una variedad de lenguajes de programación. El lenguaje de programación predeterminado es VB.NET. Aunque VB.NET y VB son algo similares, sus entornos de aplicación y métodos de escritura son diferentes. El código es diferente. También hay diferencias. En VB.NET, si desea utilizar funciones matemáticas, debe pasar la clase Math proporcionada por .NET Framework, que se encuentra en el espacio de nombres del Sistema. Los usuarios pueden agregar Imports System Math en la parte superior del código para usarlas. funciones matemáticas.
El prototipo de la función utilizada para generar números aleatorios es: Rnd(x). Esta función se utiliza para generar un número aleatorio de precisión simple entre 0 y 1. x es la semilla para generar números aleatorios. Si desea seleccionar aleatoriamente un número del rango de (min, max), debe usar la fórmula: número aleatorio = (max - min) * Rnd(x) + min.
La selección de números pseudoaleatorios comienza a partir de semillas aleatorias. Para garantizar que los números pseudoaleatorios obtenidos cada vez sean suficientemente "aleatorios", la selección de semillas aleatorias es muy importante. Si las semillas aleatorias seleccionadas son las mismas, las secuencias aleatorias generadas también serán las mismas. Generalmente, los parámetros relacionados con la hora del sistema se utilizan como semillas aleatorias, que también es el método predeterminado utilizado por el generador de números aleatorios en .net Framework.
2. Clase de números aleatorios System.Random
Clase de números aleatorios La clase System.Random proporciona los siguientes métodos para generar varios números aleatorios que cumplen con diferentes requisitos, como se muestra en la Tabla 1:
Tabla 1 Varios métodos proporcionados por la clase System.Random
número de serie | nombre del método | Descripción de la función |
1 | Próximo() | Devuelve un número entero entre 0 y 2147483647 |
2 | Siguiente(i) | Devuelve un número entero entre 0 e i |
3 | Siguiente(i,j) | Devuelve un número entero entre i~j |
4 | siguientedoble() | Devuelve un número decimal aleatorio entre 0 y 1 |
5 | Siguientedoble(byte()) | Utilice un número entero aleatorio entre 0 y 255 como valor de cada elemento de la matriz de bytes. |
Primero se debe declarar el uso de la clase de números aleatorios System.Random. Si desea utilizar el método Nextbytes(byte()), también debe declarar la matriz de bytes antes de usarlo.
3. La redacción del programa de prueba
debe establecer su entorno de desarrollo y ejecución antes de ejecutar el programa ASP.NET, incluida la configuración de Microsoft IIS y la instalación del SDK de .NET Framework y el editor MSE de la máquina. El editor MSE es un software complementario para Microsoft Office y es muy conveniente como herramienta de edición para ASP.NET. El código del programa de prueba es el siguiente:
<script language="vb" runat="server">
sub page_load(enviar como objeto,e como eventargs)
atenuar r1 como aleatorio = nuevo aleatorio ()
respuesta.write("El resultado de r1.next() es:"+r1.next().tostring())
respuesta.write("El resultado de r1.next(100)es:" +r1.next(100).tostring())
respuesta.write("El resultado de r1.next(100,150) es:"+r1.next(100,150).tostring())
respuesta.write("El resultado de r1.nextdouble() es:"+r1.nextdouble().tostring())
r1.nextbytes(r) // atenuar r(300) como byte
respuesta.write("la r(100) es:")
respuesta.escribir(r(199))
end sub </script>
Los resultados de la prueba se muestran en la Figura 1:
Figura 1 Resultados de la ejecución de la prueba de números pseudoaleatorios
Ejemplo
de análisis de requisitos de una aplicación de desarrollo: Cree una aplicación para simular un juego de dados. En este juego, los jugadores lanzan un dado al azar. Cada dado tiene seis caras, que representan los seis puntos 1, 2, 3, 4, 5 y 6 respectivamente. Cuando el dado se detenga, observe el número en la superficie superior del dado. Si el número de lanzamientos es 6, se mostrará el mensaje ganador; de lo contrario, el lanzamiento continuará.
1. Tecnologías clave
1.1 Formulario de control web
El formulario de control web tiene las características orientadas a objetos del lenguaje de alto nivel. Es un objeto del espacio de nombres System.Web.UI.WebControls en ASP.NET. El proceso de procesamiento es similar al formulario de control HTML, con las siguientes características: el formulario se ejecuta en el lado del servidor; todos los campos de entrada son controles, con propiedades y métodos potentes y ricos, y la información de los campos de entrada se puede conservar; tiene la capacidad de verificar los campos de entrada; contiene controles de visualización de datos, etc.
Un código de formulario de control web típico es el siguiente:
<asp: button id="sub3" text="confirm" runat="server"/>
Entre ellos, ASP: XXX indica qué tipo de control web es; el nombre de identificación del control; el valor del atributo Runat es servidor, lo que indica que se trata de un control que se ejecuta en el lado del servidor.
Los controles web que se utilizarán en este ejemplo son principalmente controles de botones. El control Imagen se utiliza para mostrar archivos de imagen y tiene los siguientes atributos: Imageurl, que indica la URL del archivo de imagen, el ancho de visualización del archivo de imagen, la altura de visualización del archivo de imagen, etc.
1.2 Generación de números pseudoaleatorios
De acuerdo con la descripción del análisis de requisitos, para simular los puntos obtenidos al lanzar dados al azar, es necesario generar aleatoriamente números enteros que van del 1 al 6. En este caso, el método Next (i, j) Se puede utilizar la clase System.Random, donde i=1, j=7. (El autor escribió un programa de prueba y descubrió que si j = 6, el número aleatorio generado está entre 1 y 5)
2. Implementación del programa
El código principal del programa es el siguiente:
<script language="vb" runat="server ">
sub disp(obj como objeto,e como eventargs)
dim r1 as random =new random() //Definir una clase de número aleatorio
dim file_prefix as string = "Imagesdie"
dim file_suffix as string = ".png"
value = r1. next(1,7) //valor atenuado como entero
s1 = file_prefix + value.tostring() + file_suffix
pic1.imageurl = s1 //Actualiza el atributo imageurl del control Imagen
si valor = 6 y luego
disp.text = " Usted gana" / /Mostrar información del mensaje
else
disp.text = "Inténtelo de nuevo"
end if
end sub
</script>
<form id="form1" runat="server"><br>
<asp:button id="disp" runat="server " onclick="disp" text="start"/>
<asp:image id="pic1" runat="server" width="50" height="50"/></form>
El resultado de la ejecución del programa se muestra en la Figura 2. Se muestra:
Figura 2 Resultados de la ejecución del programa
Conclusión
Los números pseudoaleatorios se utilizan en muchos lugares de las aplicaciones web. Cómo elegir los parámetros semilla para generar secuencias aleatorias y qué algoritmo aleatorio usar para generar secuencias pseudoaleatorias con mejor rendimiento son programas de computadora. Uno de los objetivos perseguidos. Utilizando la clase de generación de números pseudoaleatorios proporcionada por el marco ASP.NET y los métodos de función proporcionados por el lenguaje de programación VB.NET, se pueden generar varias secuencias aleatorias que cumplen con diferentes requisitos. Por ejemplo, el código de verificación aleatorio utilizado para la autenticación de identidad en el sistema web utiliza tecnología de generación de números aleatorios. Hay muchos artículos en este sitio web, por lo que no entraré en detalles aquí.