Páginas: [1] 2 3
|
 |
|
Autor
|
Tema: generador de numeros aleatorios en VB (Leído 24395 veces)
|
diego994
Desconectado
Mensajes: 9
¡Amo YaBB SE!
|
"Efectivo?" generador de números aleatorios en VB6 Bueno, este es un módulo q programe hace mucho para un juego en vb6, intenté jugar con la funcion Rnd sin usar la Randomize. gMaxNum es una variable global que no me acuerdo para q carajo era jejeje, na es el número max que puede devolver la función. Estudienlo q cambiando algunos valores se personaliza. Quizas a alguien le pueda servir.
Public Function intNumeroaleatorio() As Integer Dim r As String, s As Integer, t As Integer, seacabo As Boolean seacabo = False Do While seacabo = False r = CStr(Timer) s = Len(r) t = Mid(r, s, 1) intNumeroaleatorio = (t * Int(gletras * Rnd)) r = CStr(intNumeroaleatorio) s = Len(r) t = Mid(r, s, 1) intNumeroaleatorio = t If intNumeroaleatorio >= 0 And intNumeroaleatorio < gMaxNum Then seacabo = True End If Loop End Function
|
|
|
|
« Última modificación: 14 Enero 2004, 09:55 por soplo »
|
En línea
|
|
|
|
Xrasl
Desconectado
Mensajes: 10
{\XrasL/} Souless 4 EvEr
|
Hola e mirado el source que aparece arriba, pero no consigo hacerlo funcionar. si no seria mucho pedir ¿pueden explicarme como se puede hacer funcionar, yo hice un codigo que creaba numeros aleatorios pero solo me respondia con 1s y 0s, es el siguiente: Private Sub Command1_Click() Dim Num As Byte Randomize Num = Rnd Text1.Text = Num End SubYo quiero que me consiga numeros enteros entre 0 y 255, por lo que utilizé la variable byte, pero no se cual es el error que cometi. Espero k me respondan Gracias 
|
|
|
|
|
En línea
|
|
|
|
MMara
Desconectado
Mensajes: 1
|
si miras en la ayuda, te dice que rnd te da valores entre 0 y 1, así que lo que tienes que hacer es: Int((Límite_superior - límite_inferior + 1) * Rnd + límite_inferior) Lo he probado y funciona: Private Sub Command1_Click() Dim Num As Byte Num = Int(255 - 1) * Rnd + 0 Text1.Text = Num End Sub Un saludo!
|
|
|
|
« Última modificación: 16 Junio 2004, 20:25 por MMara »
|
En línea
|
|
|
|
Xrasl
Desconectado
Mensajes: 10
{\XrasL/} Souless 4 EvEr
|
Ok muchas gracias. MMara una duda sobre la ayuda. Yo le doy al boton d la ayuda y me pide que instale la "coleccion MSDN". Eso que es un programa de ayuda o algo asi?  Graciassss 
|
|
|
|
|
En línea
|
|
|
|
|
|
Villamil
Desconectado
Mensajes: 95
¿Que se supone que tenog que poner aquí?
|
Yo para hacer números aleatorios hago:
Rnd =((Int*el número máximo)-1
|
|
|
|
|
En línea
|
|
|
|
|
||MadAntrax||
|
Yo para hacer numeros aleatorios uso: Num = Int((Rnd * numero maximo)+1) (esto me muestra un numero entre el: 1 al numero maximo
o si no: Num = Int(Rnd * numero maximo) (esto me muestra un numero entre el: 0 al numero maximo - 1
|
|
|
|
|
En línea
|
|
|
|
bluedog
Visitante
|
La Coleccion MSDN (Microsoft Developer Network), Es La Ayuda Tipo CHM de Visual Studio 6.0, Esta ayuda Son 2 Discos, Por Lo Menos Esos Son Los Que Tengo Yo.  >>Ya y por si acaso, no sabes donde se podrían bajar esos discos? o simplemente hay que comprarselos a Microsoft?
|
|
|
|
|
En línea
|
|
|
|
bluedog
Desconectado
Mensajes: 3
blue[dog]
|
>>Ya pues hombre! contesteis la questions o nadie sabe?
|
|
|
|
« Última modificación: 11 Septiembre 2004, 05:11 por bluedog »
|
En línea
|
cout<<"todo se puede aprender en esta vida"<<bluedog
|
|
|
musky
Desconectado
Mensajes: 6
|
La verdad es que el codigo que postea diego994 es totalmente descartable. Ya que el Visual Basic 6 cuenta con un algoritmo interno lo cual fue optimizado para lograr un mejor desempeño en las aplicaciones.
Se utiliza Randomize para que el Rnd sea <> al anterior. Rnd Genera un numero entre 0.001 y 0.999. Int Toma la parte entera redondeando para arriva
espero que les quede claro todo adios
|
|
|
|
|
En línea
|
Nombre: Jonathan Ariel Muszkat Escuela: Ort Yatay Edad: 15 Detalles: mmm Programador (cualquier lenguaje), Diseñador(Photoshop, Freehand, Firework), Animador(Flash, + actionscript 2.0) Gustos: Autos, Rubias, Dance, Bailar punch
|
|
|
Slasher-K
Desconectado
Mensajes: 1.480
|
Para crear VERDADEROS números aleatorios en VB hay que crear nuestro propio algoritmo usando varios valores variables y combinándolos. Si queremos valores aleatorios necesitamos recurrir a la API de Win2, por ejemplo a las funciones GetTickCount, GetCurrentProcessId, GetCurrentProcess, GetCurrentThreadId. Mezclando los valores devueltos por estas funciones, más la fecha y hora actuales, más algún número generado a partir de una CLSID aleatoria, podemos obtener un número aleatorio. La idea de un número aleatorio es que no se repita en el tiempo, por lo tanto para crearlo tenemos que intentar usar parámetros que tampoco se repitan en el tiempo. Abajo dejo un ejemplo sencillo de como generar un nº aleatorio. Para usarlo hay que agregar una referencia a WIN.TLB Function Rand(Optional Seed As Long) As Currency Dim lpMem As MEMORYSTATUS Dim lTime&, lProc&, lProcId& Dim lDate&, cRand@
If Seed <= 0 Then Seed = Rnd * GetClsidCount 'Datos que se usarán para generar el número aleatorio. ' Call GlobalMemoryStatus(lpMem) lTime = timeGetTime lProc = GetCurrentProcess lProcId = GetCurrentProcessId lDate = CLng(Date) cRand = (lpMem.dwAvailVirtual Mod lTime) Xor _ ((lTime Xor (lProc Mod lProcId)) Xor _ (lProcId + (lDate Xor lpMem.dwTotalPageFile)))
Rand = cRand End Function
|
|
|
|
« Última modificación: 01 Julio 2005, 07:05 por Dunklerstern »
|
En línea
|
A la reina de las profundidades que cuida los pasos de una sombra en la noche :*
|
|
|
willmx
Desconectado
Mensajes: 1
|
¿si quiero generar numeros Pseudoaletorios? no necesito el random para eso....como lo harian
|
|
|
|
|
En línea
|
|
|
|
|
capi
|
tengo una duda y es que cuando uso rnd me sale todo bien pero siempre sale la misma cadena de numeros y por orden, alguien sabe como arreglar esto??? ???
|
|
|
|
|
En línea
|
hispalink.es.kz --->>>foro empezando, se necesitan colaboradores; contenidos: peliculas, juegos pc, ps2, xxx, etc... pasate por aquí
|
|
|
|
capi
|
tengo una duda y es que cuando uso rnd me sale todo bien pero siempre sale la misma cadena de numeros y por orden, alguien sabe como arreglar esto??? ???
Ya lo he averiguado, para quien quiera saberlo con poner un "randomize" en el "From1_load" vale, sale siempre números diferentes.
|
|
|
|
|
En línea
|
hispalink.es.kz --->>>foro empezando, se necesitan colaboradores; contenidos: peliculas, juegos pc, ps2, xxx, etc... pasate por aquí
|
|
|
Aphex
Desconectado
Mensajes: 6
|
Hola, feliz año a todos. Soy nuevo en el foro. Aunque solo soy un principiante en programación, al ver este mensaje se me ha ocurrido que quizás podría aportar algo.
Voy a poner una manera sencilla de sacar numeros aleatorios en VB6.
Hace poco realicé un simulador de dados (uno de 8 caras y otro de 100). A continuación os pongo el código del de 8:
Creais un nuevo proyecto (exe stándard) y añadís un botón (Command1), un timer (Timer1) y un label (Label1).
El código sería:
-------------------------------------------------------------------
Private Sub FormLoad() Timer1.Enabled = False End Sub _______________________________________________
Private Sub Command1_Click() Dim numero as Byte Timer1.Enabled = True
Randomize Timer numero = rnd * 8
Do While numero > 8 numero = numero - 8 Loop Do While numero < 1 numero = numero + 8 Loop label1.Caption = numero End Sub
------------------------------------------------------------ Y ya está. Cada vez que se hace clic en el botón, el programa genera diferentes números comprendidos entre el 1 y el 8 los cuales se muestran en el label1 (para el de 100 caras, se sustituye el 8 por el 100).
Espero que os sirva. ^^
PD: También espero que a los moderadores no les moleste que lo haya puesto sin el "code", pero creo que así se ve más claro (aunque si hace falta, pues me lo decís y lo cambio).
|
|
|
|
« Última modificación: 05 Enero 2005, 01:34 por Aphex »
|
En línea
|
|
|
|
|
Páginas: [1] 2 3
|
|
|
|