Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Azar SIN repetición

Estas en el tema de Azar SIN repetición en el foro de Visual Basic clásico en Foros del Web. Muy buenas. Conozco el código para pulsar un botón y que se genere automáticamente 1 palabra de 10, sería más o menos este: Private Sub ...
  #1 (permalink)  
Antiguo 23/09/2010, 16:24
 
Fecha de Ingreso: octubre-2007
Mensajes: 7
Antigüedad: 16 años, 6 meses
Puntos: 0
Azar SIN repetición

Muy buenas.

Conozco el código para pulsar un botón y que se genere automáticamente 1 palabra de 10, sería más o menos este:

Private Sub btnGenerar_Click()
Dim palabra As Integer
Randomize
palabra = Int(10 * Rnd) + 1
If palabra = "1" Then lblPalabra.Caption = "Ana"
ElseIf palabra = "2" Then lblPalabra.Caption = "Beso"
ElseIf palabra = "3" Then lblPalabra.Caption = "Carne"
ElseIf palabra = "4" Then lblPalabra.Caption = "Duende"
ElseIf palabra = "5" Then lblPalabra.Caption = "Esteban"
ElseIf palabra = "6" Then lblPalabra.Caption = "Flauta"
ElseIf palabra = "7" Then lblPalabra.Caption = "Goma"
ElseIf palabra = "8" Then lblPalabra.Caption = "Hueso"
ElseIf palabra = "9" Then lblPalabra.Caption = "Idiota"
ElseIf palabra = "10" Then lblPalabra.Caption = "Jaca"
End If
End Sub

Lo que quiero hacer, y no esto, es generar una palabra aleatoria en la primera tirada; generar una palabra aleatoria en la segunda tirada y que jamás pueda ser la misma que en la primera; generar una palabra aleatoria en la tercera tirada y que jamás pueda ser la misma que en la primera y en la segunda, y así sucesivamente. En otras palabras, generar una palabra aleatoria pero sin repetir la anterior. Y cuando genere la palabra número 10, volver a empezar desde 0, generando otras 10, siempre sin repetir, y así sucesivamente. ¿Cuál sería el código más óptimo?

Muchas gracias por la atención.
  #2 (permalink)  
Antiguo 26/09/2010, 09:15
oskarvisual
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Azar SIN repetición

Por que no utilizas select case en vez del if, por ejemplo:
Código vb:
Ver original
  1. palabra = Int(10 * Rnd) + 1
  2. Select Case palabra
  3.           case 1:
  4.                     lblPalabra.Caption = "Ana"
  5.           case 2:
  6.                     lblPalabra.Caption = "Beso"
  7.           case 3:
  8.                     lblPalabra.Caption = "Carne"
  9. [asi susecivamente...]
  10. End Select
También se me ocurre que para que nunca se repita, puedes crear una variable con una matriz por ejemplo compara(9), y cuando salga el random comparas el numero del random con el de la matriz y le pones un valor, y al siguiente random, haces la misma operacion y comparas, y si ya tiene el valor que le pusiste haces de nuevo el random, sino le pones el valor...
Se me ocurre que esa puede ser una buena forma de hacer para que no se repitan los valores, no tengo mi PC a la mano, si no te desarrollaría el código.
Espero haber sido de ayuda y que me hayas entendido.
Saludos.

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:15.