Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Cómo generar varios números aleatorios no repetidos en VB?

¿Cómo generar varios números aleatorios no repetidos en VB?

Función pública GetRndNotRepeat (ByVal NumMin es un número entero, ByVal NumMax es un número entero, ByVal n es un número entero)

Compilar: xsfhlzh

Función: tomar n enteros aleatorios entre NumMin y NumMax.

Descripción: El conjunto de indicadores es Byte, y cada bit representa el estado de un número entre NumMin y NumMax.

Dim arr() es un número entero

Si n & gtNumMax - NumMin + 1 entonces

ReDim arr(0)

arr ( 0) = 0

Otros

ReDim arr(n)

Dim b() es bytes

Marcar m como un número entero

m = Int((NumMax - NumMin) / 8)

Radim b(m)

Bandera de entrada

Marcará x como un número entero y y como un número entero

Mostrar z como un byte

Irregularizar

arr(0) = 1

Para i = 1 a n

Hacer

Encuentre la posición de X, donde y representa en qué byte de la matriz se encuentra X y z representa en qué byte de X.

x = Int(Rnd *(NumMax-NumMin+1))+NumMin

y = x - NumMin

z = 2 ^ (y Mod 8 )

y = y \ 8

Bucle cuando b(y) y z

b(y) = b(y) o z

arr(i) = x

Encuentra el número no utilizado, colócalo en la matriz y configura la bandera.

Siguiente I

Terminará si...

GetRndNotRepeat = arr

Finalizar función

Ejemplo :

a = GetRndNotRepeat(1, 10000, 2000)

Si a(0) entonces

Para i = 1 a 2000

depurar. Imprimir un(i)

Siguiente yo

Terminará si...