¿Cómo generar varios números aleatorios no repetidos en VB?
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...