Explicación detallada de ejemplos de programación en VB
1, Uso
Sintaxis: Rnd[(número)]
Si el valor del número es generado por Randomize.
Menos de 0, obtendrás el mismo resultado cada vez que uses el número como semilla de número aleatorio.
Si es mayor que 0, el número aleatorio anterior se utilizará como semilla para generar el siguiente número aleatorio.
Igual a 0, genera el mismo número aleatorio que el número aleatorio generado más recientemente.
Omitido, el número aleatorio anterior se utiliza como semilla para generar el siguiente número aleatorio (igual que mayor que 0).
Descripción:
La función Rnd devuelve un valor menor que 1 pero mayor o igual a 0.
El valor $número determina cómo Rnd genera números aleatorios.
Para la semilla dada inicialmente, también se generará la misma secuencia, porque cada vez que se llama a la función Rnd, el número anterior en la secuencia servirá como semilla para el siguiente número.
Antes de llamar a Rnd, el generador de números aleatorios se inicializa con una declaración aleatoria sin parámetros (si hay parámetros, se generará una secuencia de números aleatorios específica correspondiente a los parámetros) y el generador se obtiene de acuerdo con el sistema temporizador de semillas. Si no utiliza la instrucción Randomize, la secuencia de números aleatorios generada será la misma cada vez que se ejecute el programa.
Cuando Rnd va seguido de un número negativo, se pueden obtener dos secuencias idénticas a partir del mismo parámetro. Por ejemplo, después de ejecutar rnd -1, rnd toma 1000 números aleatorios, luego ejecuta rnd -1 y luego rnd toma 1000 números aleatorios, igual que antes. Para obtener diferentes secuencias, puede usar diferentes números negativos o puede realizar una numeración aleatoria después de rnd -1. Tenga en cuenta que para obtener la misma secuencia, los números después de la aleatorización deben ser iguales dos veces. Un uso de este método es para cifrar y descifrar.
Para generar una serie de números enteros aleatorios, puedes utilizar la siguiente fórmula:
int((límite superior-límite inferior+1)* Rnd+límite inferior)
Aquí el límite superior es el límite superior del rango de números aleatorios y el límite inferior es el límite inferior del rango de números aleatorios.
Nota: Si desea obtener una secuencia repetida de números aleatorios, llame a Rnd directamente con valores de parámetros negativos antes de usar Randomize con parámetros numéricos. La aleatorización utilizando el mismo valor no dará como resultado secuencias repetidas de números aleatorios.
2. Algoritmo de números aleatorios no repetidos 1
Este es el algoritmo más simple. Cada vez que se genera un número aleatorio se compara con el existente, y si ya existe se regenera. Es más adecuado para extraer una pequeña parte de datos de un rango grande, como extraer preguntas de un examen de un banco de preguntas.
[vb]? ¿Mirando la llanura? ¿Copiar? ¿Imprimir?
Genera 20 números aleatorios únicos entre 1 y 100.
¿Público? ¿Sub? RndNumberNoRepeat1()
¿Atenuado? RndNumber,temp(20),I,k,Maxrec? ¿Como? Entero
¿Aleatorizar (temporizador)? Inicialice el generador de números aleatorios.
Maxrec = 100
Emite números aleatorios desde A21.
k=0
¿Qué hacer? ¿cuando? k & lt20
Número rnd = Int(Maxrec * Rnd)+1
Temperatura (k) = número rnd
Celda (k + 21, 1) = RndNumber
¿Para qué? yo = 0? ¿A dónde ir? k - 1
¿Y si? temp(i) = RndNumber? ¿Entonces qué? ¿abandonar? ¿Para
el siguiente? Yo
¿Y si? yo = k? ¿Entonces qué? k = i + 1
Número aleatorio "MsgBox": "&RndNumber
Ring
¿Fin? Submarino
3. No repetitivo algoritmo de números aleatorios 2
Este algoritmo es muy inteligente y requiere una comprensión cuidadosa para conocer su verdadero significado. Este algoritmo no genera números aleatorios repetidamente, pero requiere una matriz de marcador de posición que sea más adecuada para el rango de salida. Todos los valores, por ejemplo, repartidos aleatoriamente.
[vb]? ¿Copiar?
Generar 20 números aleatorios únicos entre 1 y 100
Sub?RndNumberNoRepeat2(. )
Dim? RndNumber(99),I? Generador de números.
¿Para qué? ¿99? Generar una secuencia aleatoria que contenga 1-100. Yo
¿A dónde ir? 80?
RndNumber = Int(i * Rnd) p>
Importe estos números desde A21
Celda ( 120 - i, 1) = matriz temporal (RndNumber) + 1
TempArray(rnd número) = TempArray( I)
¿Siguiente I
¿Fin? Submarino
4. Algoritmo de números aleatorios no repetidos 3
Este algoritmo utiliza un objeto de diccionario para completar la copia, que es similar al primer algoritmo, pero el programa parece más simple, bueno. , al menos es novedoso
? Copiar
Generar 20 números aleatorios no repetidos entre 1 y 100.
Sub? ? Nuevo diccionario? p>dim? s? integer
Inicializar el conjunto del generador de números aleatorios. ¿hasta? d. Cuenta = 20
s = Int(Rnd * 100 + 1)
d(s) =? ""
Anillo
[a21]. Cambiar tamaño (d.Count, 1) = Aplicación. Transponer (tecla)
¿Fin? Submarine
Adjunto: Resumen del uso de objetos del diccionario VBA
Diccionario difuso
Crear diccionario
Set dict = CreateObject("Script. Dictionary ")
Agregar elemento
Dickett. Agregar "A", 300
Dickett. Agregar "B", 400
Dict. Añadir "C", 500
Cuenta el número de elementos
n = Diccionario
Eliminar elementos
dict.remove("A ")
Determinar si el diccionario contiene la clave
El diccionario existe(" B ")
Obtener la clave. El valor correspondiente a la palabra, por favor preste atención a si hay una clave antes de usarla; de lo contrario, habrá un registro más en el dict.
Valor = diccionario.
Proyecto ("B")
Modifica el valor correspondiente a la palabra clave y crea un nuevo proyecto si no existe.
Dickett. Artículo("B") = 1000
Dict. Item("D") = 800
Recorre el diccionario.
k = claves del diccionario.
v = diccionario. Artículo
Para i = 0. recuento - 1
clave = k(i)
valor = v(i)
Clave y contraseña de MsgBox. Valor
Luego
Eliminar todos los elementos
dict. Eliminar todo
Ejemplo:
Submacro 1()
Establecer DIC = createobject ("scripting. Dictionary")'Diccionario
Para i = 1 a 10000
Si no, me gusta "*4*", entonces
Dic. Si no contiene "1", agregue I, ""
Terminará si...
Entonces
rango("A2") . redimensionar (dic. count, 1) = aplicación. Funciones de la hoja de trabajo. Transpose(DIC.Keys)' Comience con un menú desplegable de 2 unidades.
Conector final
=================================== == =======================================
El uso Se proporciona otro ejemplo de la función de hoja de trabajo Transpose.
Convierta una matriz bidimensional con una fila y varias columnas en una matriz unidimensional.
Subtest()
Dim arr, arrt
arr = Range("a1:j1 ")
arrt = función de la mesa de trabajo . Transponer (función de hoja de trabajo. Transponer
Detener
Conector final
Primero observe el uso básico de la función de transposición. La ayuda oficial muestra que la función de transposición puede Devuelve el rango de celdas transpuestas, es decir, transpone el rango de celdas de la fila al rango de celdas de la columna, y viceversa.
La sintaxis de la función TRANSPONER es: TRANSPOSE(matriz)
El El parámetro de matriz es la matriz o rango de celdas en la hoja de trabajo que debe transponerse. La llamada transposición de matriz significa que la primera fila de la matriz es la primera columna de la nueva matriz y la segunda fila de la matriz es la segunda. columna de la nueva matriz y así sucesivamente.