Red de conocimiento informático - Material del sitio web - ¿Cómo implementar la selección de números aleatorios?

¿Cómo implementar la selección de números aleatorios?

Utilice principalmente la función Rnd en VB para realizar las funciones de búsqueda aleatoria y clasificación desordenada, logrando así el propósito de la lotería aleatoria. La estructura de sintaxis de la función Rnd es Rnd[(número)] y el parámetro numérico opcional es una expresión única o cualquier expresión numérica válida. La función Rnd devuelve un valor menor que 1 pero mayor o igual a 0. El valor del número determina cómo Rnd genera números aleatorios. Para generar un número entero aleatorio dentro de un rango, use la siguiente fórmula:

Int((límite superior - límite inferior + 1) × Rnd + límite inferior)

Aquí, el límite superior es el rango de números aleatorios números El límite superior de , mientras que el límite inferior es el límite inferior del rango de números aleatorios.

Además, el programa también utiliza archivos INI, archivos INI de Windows, que pueden interpretarse como archivos de inicialización de Windows. Es un archivo de texto especialmente utilizado para guardar información de inicialización de aplicaciones e información del entorno de ejecución. El archivo ini es un archivo de texto que se puede editar con un editor de texto como el Bloc de notas. Los archivos ini tienen un formato específico. Un archivo INI se compone de varias secciones, cada sección contiene varias palabras clave (claves) y valores correspondientes (valores). Cree el propio archivo INI de la aplicación, guarde cierta información del entorno de ejecución de la aplicación a través del archivo INI y luego lea la información de configuración en el archivo INI en el programa y procese en consecuencia. Una vez que es necesario cambiar el entorno de ejecución del programa, la disponibilidad del programa se puede garantizar modificando directamente el archivo INI o modificando indirectamente el archivo INI proporcionando una interfaz especial en el programa.

El programa fuente y los comentarios son los siguientes:

'Formulario del programa fuente

Opción explícita

Dim m_strNameArray() As MyName

Dim m_bIsStart como booleano

Dim m_nNameIndex como entero

Dim MAX_INDEX como entero

Dim m_nSelectNum como entero

'Se seleccionará el número

Dim nScrollStep As Integer

Dim nScrollWidth As Integer

Dim bScrollState As Boolean

Dim nEnableSecond As Integer

Dim m_strTitle como cadena

Dim m_strAppTitle como cadena

Dim m_strScrollTitleLeft como cadena

Dim m_strScrollTitleRight como cadena

Privado Sub Command_Start_Stop_Click()

Si m_bIsStart = True Entonces

'Presione el botón de detener

m_bIsStart = False

Command_Start_Stop.Caption =

"Inicio"

Label_FlashName.Visible = True

Timer_FlashName.Enabled = True

Timer_ScrollName.Enabled = False

Label_FlashName =

m_strNameArray(m_nNameIndex).strName + “¡Gana! "

m_strNameArray(m_nNameIndex).bIsSelect = True

m_nSelectNum = m_nSelectNum + 1

Atenuar temperatura como mi nombre

Temp =m_strNameArray( MAX_INDEX)

m_str Name Array(MAX-INDEX) = m_strNameArray(m_nNameIndex)

m_strNameArray(m_nNameIndex) = Temp

MAX_INDEX = MAX_INDEX - 1

Si MAX_INDEX = 0 Entonces

MsgBox "Muchas gracias por usar este software"

End If

Else 'Presiona el botón de inicio

m_bIsStart = True

Command_Start_Stop.Caption = "Detener"

Command_Start_Stop.Enabled = False

Timer_ScrollName.Enabled = True

Timer_FlashName.Enabled = False

Label_FlashName.Caption = ""

Finalizar si

Finalizar sub

Sub privado Form_Load()

Form_Bouns.ScaleMode = 3

m_nNameIndex = 0

m_bIsStart = False

Timer_ScrollName.Enabled = True

Timer_ScrollTitle.Enabled = True

Label_FlashName.Visible = False

Label_ScrollName.Caption = ""

nEnableSecond = 0

'Definir segundos iniciales

ReDimNameArray

'Obtiene los nombres en el texto y codifica el orden de los nombres

nScrollStep = 5 'Establece el tamaño del paso de las palabras en desplazamiento

nScrollWidth = Label_Congruation.Left

'Establece el ancho de movimiento del título

bScrollState = False

'Establece la dirección de desplazamiento inicial predeterminada hacia la izquierda

m_nSelectNum = 0

'Inicializa el número seleccionado en 0

Init

'Inicializa la interfaz de este programa

End Sub

Private Sub Timer_FlashName_Timer() 'Mostrar el nombre del ganador

Si Label_FlashName.Visible = True Entonces

Label_FlashName.Visible = False < / p>

Else

Label_FlashName.Visible = True

End If

End Sub

Private Sub Timer_ScrollName_Timer() ' Desplazamiento para que aparezcan nombres

Si m_bIsStart = True Entonces

Si m_nNameIndex gt; = MAX_INDEX Entonces

m_nNameIndex = 0

Fin Si

p> p>

m_nNameIndex =m_nNameIndex + 1

Si m_strNameArray(m_nNameIndex).bIsSelect = True Entonces

Si m_nNameIndex lt; MAX-INDEX Entonces

m_nNameIndex =

m_nNameIndex + 1

Else

m_nNameIndex = 0

Finalizar si

Finalizar si

Label_ScrollName.Caption = m_str

NameArray(m_nNameIndex).strName

'End If

End If

End Sub

Private Sub Timer_ScrollTitle_Timer() 'Desplaza las palabras "Gong Xi Fa Cai"

Si bScrollState = False Entonces 'Desplázate hacia la izquierda

nScrollStep = 10

Label_Congruation.Caption = m_strScrollTitleLeft

Si nScrollWidth gt; 0 Entonces

nScrollWidth =

nScrollWidth - nScrollStep

Else

bScrollState = True

Finalizar si

Else 'Desplazarse hacia la derecha

nScrollStep = -10

Label_Congruation.Caption =

m_strScrollTitleRight

If nScrollWidth lt; Form_Bouns.ScaleWidth -

Label_Congruation.Width Then

nScrollWidth =

nScrollWidth - nScrollStep

Else

bScrollState = False

Finalizar si

Finalizar si

Label_Congruation.Left = nScrollWidth

'Lo siguiente es habilitar el botón "Detener" en 8 segundos

Si nEnableSecond lt;= 49 Entonces

Si m_bIsStart = True Entonces

nEnableSecond =nEnableSecond + 1

Fin si

Si no

Si m_bIsStart = True Entonces

Command_Start_Stop.Enabled = True

nEnableSecond = 0

Finalizar si

Finalizar si

Finalizar sub

p>

'Definición dinámica de matriz

Private Sub ReDimNameArray()

Dim nMaxIndex As Integer

Dim strMaxIndex As String

Dim nIndex como entero

Dim bIsBegin como booleano

bIsBegin = False

nIndex = 0

Abrir aplicación .Path + “\name .txt" Para entrada como #1 'Leer archivo

D

o Hasta EOF(1)

Si bIsBegin = False Entonces

Entrada de línea #1, strMaxIndex

nMaxIndex = Val(strMaxIndex)

MAX_INDEX = nMaxIndex - 1

ReDim m_strNameArray(0 To nMaxIndex - 1)

bIsBegin = True

Else

Entrada de línea # 1. m_strNameArray(nIndex).strName

m_strNameArray(nIndex).bIsSelect = False

nIndex = nIndex + 1

Fin si

Bucle

'Lo siguiente es alterar el orden de las personas 10 veces

Dim i As Integer

Dim j As Integer

Dim Temp As String

Dim nRandomNum As Integer

Para j = 0 a 10

Para i = 0 a nMaxIndex - 1

nRandomNum = ( (nMaxIndex - 1) × Rnd) 'Usar función Rnd

Temp = m_strNameArray(i).strName

m_strNameArray(i).strName = m_strNameArray(nRandomNum).strName

m_strNameArray(nRandomNum).strName = Temp

Siguiente i

Siguiente j

Fin Sub

Privado Sub Init( ) 'Leer archivo INI

Dim X As Long

Dim lpFileName

Dim Temp As String × 50

lpFileName = Ruta de aplicación + "\Sortition.ini"

X = GetPriv.

ateProfileString("SYSTEM", "AppTitle", "Lottery Program", Temp, Len(Temp), lpFileName)

m_strAppTitle = Trim(Temp)

Temp = "" p>

Temp = ""

m_strScrollTitleRight = Recortar(Temp)

> m_strScrollTitleLeft = Recortar(Temp)

Form_Bouns. Caption = m_strAppTitle

Label_CompanyTitle.Caption = m_strTitle

End Sub

Programa fuente del módulo:

'Función API para leer archivos ini

Declarar función GetPrivateProfileString Lib "kernel32" Alias ​​​​"GetPrivateProfileStringA" (ByVal lpApplicationname como cadena, ByVal lpKeyName como cadena, ByVal lpDefault como cadena, ByVal lpReturnedString como cadena, ByVal nSize como cadena, ByVal lpFileName como cadena) Siempre que

Escriba público MiNombre

strName como cadena

bIsSelect como booleano

Tipo final

Desde el El archivo ini de Windows utilizado por el programa guarda cierta información del título, el entorno de uso y el contenido del título se pueden modificar fácilmente.

.

Vea el contenido del archivo ini:

[SISTEMA]

El nombre del formulario de la aplicación

AppTitle="Fengyun Computer Lottery" Test"

; Título dentro de la ventana (limitado a 9 caracteres)

Título="Gran Lotería"

; Texto que se desplaza hacia la derecha (solo puede estar en el siguiente formato: XXXX!!!)

ScrollTitleRight="¡¡¡Felicitaciones por hacerte rico!!!"

Texto desplazable hacia la izquierda (¡solo puede estar en el siguiente formato: XXXX!); !)

ScrollTitleLeft="¡¡Buena suerte!!!"