Red de conocimiento informático - Problemas con los teléfonos móviles - Ejemplo de programación Vvb

Ejemplo de programación Vvb

Programación VBA para realizar salidas de números aleatorios no repetitivos. La función aleatoria en VBA es RND y la función aleatoria en la hoja de trabajo es Rand. Recuerda la palabra diferencia. El rango de RND es [0, 1], que representa un número aleatorio entre 0 y 1, incluido 0 pero sin incluir 1.

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 temporizador del sistema 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 repetitivos 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. Aleatorio no repetitivo algoritmo numérico 2

Este algoritmo es muy inteligente y debe comprenderse detenidamente para conocer su verdadero significado. Este algoritmo no genera números aleatorios repetidamente, pero requiere una matriz de marcador de posición. Es más adecuado para todos los resultados. rangos. Valor, por ejemplo, distribuido aleatoriamente

[vb]? ¿Copiar?

Generar 20 números aleatorios únicos entre 1 y 100. /p>

Sub? )

Dim? RndNumber(99), I? como entero

¿Inicializar la generación de números aleatorios?

¿Para qué generar una secuencia aleatoria no repetitiva?

TempArray(i) = i

Yo

¿Dónde está i = 99?

RndNumber = Int(i * Rnd)

Importe estos números desde A21

Celda(120 - i, 1) = matriz temporal(RndNumber) 1

TempArray(rnd número) = TempArray (I)

¿Siguiente? Yo

Fin? Submarino

4. Algoritmo de números aleatorios no repetidos 3

Este algoritmo está completo usando objetos de diccionario Copiar, similar al primer algoritmo, pero el programa parece más simple, bueno, al menos es novedoso

【VB】 ¿Una copia aleatoria que no se repite? número entre 1 y 100.

¿Dim? s? como ? entero

¿Inicializar el generador de números aleatorios? d = CreateObject("Script.Dictionary") ? ? ¿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")

Determina si el diccionario contiene la palabra clave.

El diccionario existe (" B ")

Obtenga el valor correspondiente a la palabra clave. Preste atención a si hay una clave antes de usarla, de lo contrario habrá un registro más. 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 parámetro 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.