Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: diego994 en 19 Noviembre 2003, 17:38 pm



Título: generador de numeros aleatorios en VB
Publicado por: diego994 en 19 Noviembre 2003, 17:38 pm
"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


Título: Re: generador de numeros aleatorios en VB
Publicado por: Xrasl en 9 Mayo 2004, 05:16 am
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 Sub

Yo 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 :)


Título: Re: generador de numeros aleatorios en VB
Publicado por: MMara en 16 Junio 2004, 20:15 pm
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:
Código:
Private Sub Command1_Click()
    Dim Num As Byte
    Num = Int(255 - 1) * Rnd + 0
    Text1.Text = Num
End Sub
Un saludo!


Título: Re: generador de numeros aleatorios en VB
Publicado por: Xrasl en 18 Junio 2004, 20:43 pm
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?  :P
Graciassss ;)


Título: Re: generador de numeros aleatorios en VB
Publicado por: el_chente23 en 22 Junio 2004, 05:57 am
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.  ;)



Título: Re: generador de numeros aleatorios en VB
Publicado por: Villamil en 26 Junio 2004, 00:53 am
Yo para hacer números aleatorios hago:

Rnd =((Int*el número máximo)-1


Título: Re: generador de numeros aleatorios en VB
Publicado por: Mad Antrax en 3 Julio 2004, 00:21 am
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


Título: Re: generador de numeros aleatorios en VB
Publicado por: bluedog en 25 Agosto 2004, 06:21 am
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?


Título: Re: generador de numeros aleatorios en VB
Publicado por: bluedog en 11 Septiembre 2004, 05:08 am
>>Ya pues hombre! contesteis la questions o nadie sabe?


Título: Re: generador de numeros aleatorios en VB
Publicado por: musky en 11 Noviembre 2004, 06:30 am
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



Título: Re: generador de numeros aleatorios en VB
Publicado por: Slasher-K en 24 Noviembre 2004, 14:18 pm
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

Código:
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


Título: Re: generador de numeros aleatorios en VB
Publicado por: willmx en 29 Noviembre 2004, 09:25 am
¿si quiero generar numeros Pseudoaletorios? no necesito el random para eso....como lo harian


Título: Re: generador de numeros aleatorios en VB
Publicado por: capi en 30 Diciembre 2004, 08:30 am
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??? ???


Título: Re: generador de numeros aleatorios en VB
Publicado por: capi en 31 Diciembre 2004, 09:17 am
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.


Título: Re: generador de numeros aleatorios en VB
Publicado por: Aphex en 4 Enero 2005, 11:00 am
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).


Título: Re: generador de numeros aleatorios en VB
Publicado por: Trebor en 12 Enero 2005, 08:26 am
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).
buenas, gracias por el code, pero creo k el

Private Sub FormLoad()
Timer1.Enabled = False
End Sub

no hace falta,el control timer, como otros, por ejemplo el winsock, no se muestran en tiempo de ejecucion ;)


Título: Re: generador de numeros aleatorios en VB
Publicado por: zaerik en 12 Enero 2005, 08:32 am
buenas, gracias por el code, pero creo k el

Código:
Private Sub FormLoad()
Timer1.Enabled = False
End Sub

no hace falta,el control timer, como otros, por ejemplo el winsock, no se muestran en tiempo de ejecucion ;)

Creo que te equivocas de funcion :P, esa funcion lo que hace es que al cargar el programa el timer1 se desactive, porque al autor del programa le interesaba que el timer1 solo se active cuando le de a un boton, por eso luego usa la funcion:

Código:
Private Sub Command1_Click()
Dim numero as Byte
Timer1.Enabled = True
...


Título: Re: generador de numeros aleatorios en VB
Publicado por: Trebor en 14 Enero 2005, 09:05 am
joder k cabeza la mia, la abia confundido con visible,jajajaj, lo siento


Título: Re: generador de numeros aleatorios en VB
Publicado por: Juan_Perez en 22 Abril 2005, 18:10 pm
Les dejo una función que genera números aleatorios. Esta está codificada en Pascal pero se puede adaptar fácilmente a Visual Basic, sólo usa las operaciones aritméticas y los operadores binarios DIV y MOD, los cuales dan el cociente y el residuo de una división entera respectivamente. Esta función y el texto en cursiva abajo lo saqué del libro "Pascal Avanzado. Técnicas de Programación" de Paul Sand, de la editorial McGraw-Hill 1985. Libro excelente para el programador en general, no sólo el que programa en Pascal, ya que su énfasis es en las técnicas de programación antes que en un lenguaje específico como Pascal. En el desarrollan en cada capítulo programas útiles o interesantes (entrada interactiva, una calculadora de propósito general, el juego de tablero reversi, simulación y animación y en el último capítulo un auténtico proyecto: una hoja de cálculo).
Esta función viene en el apéndice del libro y el autor la puso para resolver problemas de transportabilidad con las versiones de Pascal que no soportaban números aleatoreos, función que el usa en el capítulo de simulación y animación.
Código:
function random: integer;
{ Devuelve un entero aleatorio en el rango 0..32767 }
var
   i, j, carry, t: integer;
begin { random }
   for i := 1 to 7 do begin
      carry := 0;
      for j := 1 to 4 do begin
         t := 2 * seed[j] + carry;
         carry := t div 256;
         seed[j] := t mod 256
      end;
      if (seed[1] div 128) <> (seed[4] div 128) then
         seed[1] := (seed[1] + 1) mod 256
   end;
   random := 256 * (seed[1] div 2) + seed[3]
end;
   Este array debe ser global para que guarde sus valores entre diferentes llamadas a random. El array debe ser inicializado antes de cualquier llamada a random; por ejemplo:
...
seed[1] := 90;
seed[2] := 178;
seed[3] := 246;
seed[4] := 147;
...
   Sin embargo, si asignamos los valores iniciales al array seed de esta forma, obtendremos siempre la misma secuencia aleatoria (lo cual es deseable en muchas circunstancias). Para evitar esto, Apple Pascal suministra el procedimiento randomize, el cual hace que se generen diferentes secuencias aleatorias. El mismo efecto puede obtenerse cambiando los elementos del array seed a otros valores antes de que se haga cualquier llamada a random; cómo puede hacerse esto se lo dejamos a usted. Por ejemplo, podría coger el intervalo de tiempo en ciclos de máquina entre la pulsación de dos teclas.
   Esta rutina fue extraída de Seminumerical Algortihms de D. Knuth (Adison-Wesley, 1981). Esta obra clásica contiene información sobre aritmética y generadores de números aleatoreos.


Título: Re: generador de numeros aleatorios en VB
Publicado por: Unravel en 29 Abril 2005, 05:22 am
Quería puntualizar una cosa nada mas,

Si alguno conseguís generar números aleatorios, habreis revolucionado el mundo ;)

Si la misma semilla genera el mismo número (como ocurre siempre) ya no son número aleatorios.


Título: Re: generador de numeros aleatorios en VB
Publicado por: Bertin en 29 Abril 2005, 15:34 pm
Aqui os mando una solucion muy sencilla para la generacion de numeros aleatorios q funciona perfectamente. La funcion randomize sirve para inicializar el generador sino os hara siempre la misma cadena de nºs aleatorios. Despues simplemete es la siguiente sintaxis:
           num_aleatorio=((lim_superior-lim_inferior)*rnd)
           
Ejemplo de num aleatorio del 1 al 10:

   
Código:
Private Sub Command1_Click()
    Dim num As Integer
    Math.Randomize
    num = ((10 - 0) * Rnd)
    Text1.Text = num
End Sub

ASI DE SENCILLO NO OS KOMAIS MAS EL kOKO!!
bueno espero q os sirva de ayuda.


Título: Re: generador de numeros aleatorios en VB
Publicado por: BADBYTE-K en 20 Mayo 2005, 04:32 am
form.show

apoyo a unravel en lo que dice


Título: Re: generador de numeros aleatorios en VB
Publicado por: Monica_si en 25 Mayo 2005, 22:38 pm
Hola! Yo necesito saber si existe alguna forma de crear numeros aleatorios pero sin utilizar la funcion random,por favor ayudenme!  ;D


Título: Re: generador de numeros aleatorios en VB
Publicado por: Benni en 20 Junio 2005, 08:31 am
aqui uno  q hice
Código:
Randomize
Form1.ns1 = Int((Rnd() * 8) + 1)
Form1.ns2 = Int((Rnd() * 8) + 1)

Do While Form1.ns2 = Form1.ns1
     Form1.ns2 = Int((Rnd() * 8) + 1)
Loop

Form1.ns3 = Int((Rnd() * 8) + 1)
Do While Form1.ns3 = Form1.ns1 Or Form1.ns3 = Form1.ns2
   Form1.ns3 = Int((Rnd() * 8) + 1)
Loop

Form1.ns4 = Int((Rnd() * 8) + 1)
Do While Form1.ns4 = Form1.ns1 Or Form1.ns4 = Form1.ns2 Or Form1.ns4 = Form1.ns3
   Form1.ns4 = Int((Rnd() * 8) + 1)
Loop

genera cuatro numeros aleatorios diferentes entre 0 y 9
solo necesitan cuatro textbox y esto lo ponen en form_load


Título: Re: generador de numeros aleatorios en VB
Publicado por: Dark_Knight en 26 Julio 2005, 08:34 am
hola

Alguien me podria decir como hacer un generador de numeros y letras

 ;D  ;D


Título: Re: generador de numeros aleatorios en VB
Publicado por: ferris en 27 Julio 2005, 02:08 am
hola es la primera vez que me conecto con este foro y es exelente son de gran ayuda , quisiera saber com puedo llenar una grilla con numeros aleatorios


Título: Re: generador de numeros aleatorios en VB
Publicado por: NYlOn en 21 Agosto 2005, 08:24 am
Citar
Alguien me podria decir como hacer un generador de numeros y letras

para generar letras aleatoriamente, podrias asignarle una letra a cada numero
aca hice una pequeña demostracion

Código:
Private Sub Command1_Click()
Dim Num As Long
Dim Letra As String
Randomize 'para que no nos de siempre la misma cadena
Num = Rnd * 3 'al 3 lo tenes que cambiar por la cantidad de letras que hay
Select Case Num
   Case "1" 'si el numero aleatorio (Num) es 1
   Letra = "A" 'la Letra es A
   Case "2"
   Letra = "B"
   Case "3"
   Letra = "C"
End Select
Text1.Text = Letra 'Pone la letra aleatoria en un TextBox
End Sub

espero que te sirva ::D

Citar
quisiera saber com puedo llenar una grilla con numeros aleatorios
soy de Argentina, a que te referis con grilla ?? XD
si lo que keres es llenar un textbox siempre con la misma cantidad de numeros seria asi:

Código:
Dim Num As Long
Math.Randomize
Num = Int(1000 - 100) * Rnd + 100
Text1.Text = Num

solo saldran numeros de 3 sifras
si no aclare tu duda, por favor postea de vuelta ^^

un abraz0 ;)

G0nz4


Título: Re: generador de numeros aleatorios en VB
Publicado por: desnut en 2 Junio 2008, 22:14 pm
Buenas, a todos. Estoy intentando hacer un programa que genere numeros aleatorios.
De momento e conseguido que genere numeros aleatorios con el codigo expuesto en este post y ahora me interesaria que el programa comparara los numeros y dijera cual es el primer numero que sale repetido mas veces, cual es el segundo numero que sale mas veces despues del primero y cual es el 3r numero repetido que sale mas veces.

de momento esto es lo mas aproximado.

Private Sub Command1_Click()
    Dim num As Integer
    Math.Randomize
    num = ((36 - 0) * Rnd)
    Text1.Text = num
    List1.AddItem Text1.Text
End Sub

Cuando genera los numeros los apunta en el listbox, la cuestion seria que sacara los 3 resultados de los numeros que mas veces se repiten en 3 texbox distintos por ejemplo,
No hace falta decir que he buscado por el tito google y por todas partes y no e encontrado nada, gracias de antemano ;).


Título: Re: generador de numeros aleatorios en VB
Publicado por: seba123neo en 2 Junio 2008, 22:17 pm
desnut,hombre,reviviste un post de 3 años  :¬¬,pregunta en uno nuevo...


Título: Re: generador de numeros aleatorios en VB
Publicado por: abel_c_b en 2 Junio 2008, 22:23 pm
Las cosas que uno hace  ;D


Título: Re: generador de numeros aleatorios en VB
Publicado por: desnut en 3 Junio 2008, 10:35 am
jejejje, no me habia dado cuenta que el post tenia tanto xd, abrire otro haber k tal, gracias.


Título: Re: generador de numeros aleatorios en VB
Publicado por: sphiros en 17 Diciembre 2010, 06:28 am
aqui les dejo este ejemplo que genera numeros y letras aleatoriamente

Private Sub Form_Load()
    cadena = "abcdefghijklmnopqrstuvwxyz"
    cadena = cadena & UCase(cadena)
    cadena = cadena & "1234567980"
End Sub

Private Sub Command1_Click()
    For i = 1 To 12 'aquí pueden poner la cantidad que no sea mayor al len() de la cadena
        Randomize Time
        num = CInt((1 - Len(cadena)) * Rnd + Len(cadena))
        salida = salida & Mid(cadena, num, 1)
    Next i
End Sub

:rolleyes: ;-) ;-) :silbar: