Visual Basic.NET - numeros aleatorios diferentes

 
Vista:

numeros aleatorios diferentes

Publicado por archi (18 intervenciones) el 07/10/2005 20:39:20
Resulta que necesito que mi aplicación genere un numero determinado de numeros aleatorios entre 0 y 24, pero cuando sale uno, no quiero que este vuelva a salir, lo unico que se me ocurrio es utilizar System.Random con una funcion que llama a su metodo next(0,24), pero que si el numero que salio es igual a otro que vuelva a llamar al metodo nuevamente, pero resulta que me da un StackOverFlowException, y entonces no se como hacer para que ese numero que ya salio no vuelva a salir.

Seria de gran ayuda. De Antemano muchas gracias......
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:numeros aleatorios diferentes

Publicado por Edgar (1501 intervenciones) el 07/10/2005 20:44:23
Hola

Podrias publicar parte de ese codigo???

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:numeros aleatorios diferentes

Publicado por archi (18 intervenciones) el 07/10/2005 21:04:41
En realidad es un jueguito en C Sharp que estoy haciendo de cartas, la cuestion es que me debuelve una instancia de Carta que es una clase que a su vez tiene una propiedad llamada estado, que determina si ya salio o no (disculpa si tiene errores de sintaxis pero lo acabo de pasar a basic).

He creado un array de cartas y accedo a ellas por medio de su indice. La cosa es que no quiero que salga esa carta nuevamente:

public function ProporcionarCarta() as Carta
Dim cartaRetorno as Carta = nothing
Dim cartaAceptada as Bool = false
Dim r as new Random()
Dim indiceSeleccionado as Integer = 0
Do while(!cartaAceptada)
indiceSeleccionado = r.Next(0, 53)
if(cartas(indiceSeleccionado).Estado = EstadoCarta.NoRepartida)
cartas(indiceSeleccionado).Estado = EstadoCarta.Repartida
cartaRetorno = cartas(indiceSeleccionado)
cartaAceptada = true
end if
loop
return cartaRetorno;
end function
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:numeros aleatorios diferentes

Publicado por Edgar (1501 intervenciones) el 07/10/2005 21:15:30
Hola

En principio aparente no haber ningun problema con el código, es posible que el stackoverflow esté dando por otra razón, como por ejemplo que por alguna razón, se hallan repartido todas las cartas y eso provoque un loop infinito en tu aplicación.. por decir un ejemplo

Tendrías que detallar mas el error y hacer una ejecución paso por paso para ver que es lo que puede estar sucediendo...

Ahora bien, yo implementaria otra solución.. al mismo tiempo que tienes el arreglo de cartas yo usaria otra estructura (por ejemplo un arraylist) en donde coloco tambien una referencia a las 54 cartas.. ahora bien.. lo que haria sería en cada iteración, en vez de colocar que la carta está repartida y mantenerlo en el arraylist, la eliminaria, de tal manera que en el arraylist mantengo unicamente las cartas no seleccionadas... y garantizo que en cada iteración voy a escoger una carta que no ha sido repartida..

En este caso debes tomar en cuenta que la funcion random siempre cambia, la primera vez lo haces entre 0 y 53, la segunda entre 0 y 52 y asi sucesivamente...

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:numeros aleatorios diferentes

Publicado por archi (18 intervenciones) el 07/10/2005 21:21:29
Excelente, no se me habia ocurrido. lo de random lo puedo solucionar por medio de la propiedad length o algo parecido, igual a primera impresion parece que todo esta bien como lo tengo, hare lo que me dices de la ejecucion paso a paso, si no hare lo ultimo que propones.

Muchas gracias Edgar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar