elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Randomize
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Randomize  (Leído 1,884 veces)
Frikimaster

Desconectado Desconectado

Mensajes: 35


Dim Frikimaster As BPF [Battle Programmer Friki]


Ver Perfil
Randomize
« en: 4 Abril 2008, 17:23 pm »

Saludos gentes :3, a ver si me podeis echar un cable:

  • BBDD en ACCESS que contiene X preguntas (unas 150 creo)
  • Un VB 6.0
  • Codigo Propio
  • Quiero hacer un RAndomize

La cosa es que estoy haciendo un Trivial, la BBDD contiene varias preguntas con 3 opciones cada una, quiero recojer los valores pero en plan random para que cada vez que cambies de pregunta elija una diferente entre la base de datos.

 
Me podriais echar una mano? Mi codigo es este, criticadlo, analizadlo y quemadlo si quereis xD




Private Function GetNovaPregunta(Optional Actual As Integer = -1) As Integer
   
    Dim SQL As String
    Dim BaseDeDades As DAO.Database ' DAO = Data Acces Objects -- ADO = ActiveX Data Objects
    Dim rstPreguntes As DAO.Recordset ' conjunt de registres, representacio de la taula
    Dim i As Integer
   
     ' Obrim BD
    Set BaseDeDades = Workspaces(0).OpenDatabase(BD)
   
    SQL = "SELECT MAX(id_P) as MAX, MIN(id_p) as MIN FROM PREGUNTAS;"
    Set rstPreguntes = BaseDeDades.OpenRecordset(SQL)
    If Not rstPreguntes.EOF Then
        IndexMax = rstPreguntes.Fields("MAX")
        IndexMin = rstPreguntes.Fields("MIN")
    End If
    rstPreguntes.Close: Set rstPreguntes = Nothing
    BaseDeDades.Close: Set BaseDeDades = Nothing
Ale:
    ' Num aleatori
    Randomize
   
    i = Rnd * 100
    If i > IndexMax Then
        GoTo Ale
    ElseIf i < IndexMin Then
        GoTo Ale
    ElseIf Actual > 0 And i = Actual Then
        GoTo Ale
    Else
        GetNovaPregunta = i
    End If
   
   
End Function

Frikimaster


« Última modificación: 4 Abril 2008, 17:25 pm por Frikimaster » En línea

La musica de la logica nunca fallara al sonar la melodia de la verdad.
cassiani


Desconectado Desconectado

Mensajes: 978


« Anterior | Próximo »


Ver Perfil WWW
Re: Randomize
« Respuesta #1 en: 4 Abril 2008, 18:09 pm »

La cosa es que estoy haciendo un Trivial, la BBDD contiene varias preguntas con 3 opciones cada una, quiero recojer los valores pero en plan random para que cada vez que cambies de pregunta elija una diferente entre la base de datos.

Código
  1. Ale:
  2.    Randomize
  3.    i = Int(Rnd * indexmax) + 1
  4.    If i = actual Then GoTo Ale

¡S4lu2!


« Última modificación: 4 Abril 2008, 18:13 pm por cΔssiΔnі » En línea

Frikimaster

Desconectado Desconectado

Mensajes: 35


Dim Frikimaster As BPF [Battle Programmer Friki]


Ver Perfil
Re: Randomize
« Respuesta #2 en: 8 Abril 2008, 15:49 pm »

Entonces la cosa quedaria asi verdad?

Ale:
    Randomize
    i = Int(Rnd * IndexMax) + 1
    If i = Actual Then GoTo Ale
   
    ElseIf i < IndexMin Then
        GoTo Ale
    ElseIf Actual > 0 And i = Actual Then
        GoTo Ale
    Else
        GetNovaPregunta = i
    End If
       
End Function

Frikimaster
En línea

La musica de la logica nunca fallara al sonar la melodia de la verdad.
proteo1

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Randomize
« Respuesta #3 en: 8 Abril 2008, 20:32 pm »

Entonces la cosa quedaria asi verdad?

Ale:
    Randomize
    i = Int(Rnd * IndexMax) + 1
    If i = Actual Then GoTo Ale
   
    ElseIf i < IndexMin Then
        GoTo Ale
    ElseIf Actual > 0 And i = Actual Then
        GoTo Ale
    Else
        GetNovaPregunta = i
    End If
       
End Function

Frikimaster

A mi forma seria asi: quizas muy sencilla :D

Citar
Dim Tempo as Integer
For Tempo = 0 to IndexMax
 List1.Additem =Cstr(Tempo)
Next Tempo

List2.Clear
Do While List1.Listcount>0
 Tempo=Int(Rnd * List1.Listcount) + 1
 List2.Additem Cstr(Tempo)
 List1.RemoveItem Tempo
Loop

espero me haya salido bien a la primera la desventaja que le veo son las listbox porque como lo han presentado no ocupan ello mas que puras variables
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Randomize Timer? « 1 2 »
Programación Visual Basic
Saberuneko 15 7,323 Último mensaje 7 Noviembre 2011, 01:22 am
por Saberuneko
Gracias Randomize
Windows
HugoCar 4 2,697 Último mensaje 17 Febrero 2012, 15:17 pm
por Randomize
¿Y Randomize?
Foro Libre
тαптяα 2 2,077 Último mensaje 6 Mayo 2015, 22:41 pm
por @synthesize
Habéis banneado a Randomize??
Sugerencias y dudas sobre el Foro
Constance 5 4,666 Último mensaje 9 Mayo 2017, 13:33 pm
por Eleкtro
Curiosidad: ¿Randomize es moderador o no? « 1 2 »
Sugerencias y dudas sobre el Foro
Tachikomaia 13 9,161 Último mensaje 8 Septiembre 2021, 16:24 pm
por AlbertoBSD
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines