C sharp - Numeros aleatorios se repiten

   
Vista:

Numeros aleatorios se repiten

Publicado por Pablo (2 intervenciones) el 09/03/2009 14:27:06
Hola a todos.
Estoy aprendiendo a manejar c# y quice hacer una prueba para crear 5 dados que generen cada uno un numero diferente.
Pero cuando imprimo los numeros de cada dado todos tienen el mismo numero.
En Ansi C existia una forma de resetear la semilla del random, aca no se como hace.

Si alguien puede darme una mano se los voy a agradecer-
Pablo
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 se repiten

Publicado por m (97 intervenciones) el 09/03/2009 21:48:46
Que tal, pues no entiendo bien tu pregunta, pero aqui tienes
un ejemplo de como obtener un valor aleatoreo para tus dados

//pseudocodigo:
int dado1=RandomNumber(1,6);

int dado2=RandomNumber(1,6);

int dado3=RandomNumber(1,6);

private int RandomNumber(int min, int max)
{
Random random = new Random();
return random.Next(min, max);
}


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 se repiten

Publicado por Sebastian Cruz (3 intervenciones) el 11/03/2009 03:23:27
Hola Pablo como estas, lo que puede estar pasando es que la funcion random te este generando la misma semilla vez tras vez en cada ocacion que la llamas y por eso es que te da ese problema de que siempre te sale el mismo numero.
Cuando estas trabajando con el random lo conveniente es crear la semilla fuera del bucle o metodo usado por algun bucle para generar el numero aleatorio, por ejemplo podrias crear el random como un atributo mas de la clase que estas usando y luego utilizarlo sin problemas donde lo necesites ya que la inicializacion se realizaria fuera del metodo. Aqui te paso un pequeño ejemplo en consola

class PruebaRandom
{
Random r;
public PruebaRandom()
{
r=new Random();
}
public int GenerarNumero()
{
//Le digo q el numero puede ser entre 1 y 6
return r.Next(1,7);
}

public void TirarDados()
{
for(int i=0,i<5;i++)
{
Console.WriteLine("Dado "+(i+1)+": "+GenerarNumero());
}
}

}
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 se repiten

Publicado por Pablo (2 intervenciones) el 11/03/2009 22:09:59
Les agradezco las respuestas, efectivamente ahi tenia el problema.
Cada vez que creaba el objeto hacia un random y ahi es donde fallaba.

Asi es como quedo, ahora el Ramdom lo hago una sola vez dentro del main.

Muchas gracias.

class Dado {
public int Numero;
public Dado()
{
}
public Dado(int dad) {
this.Numero = dad;
}

public int VerNumero()
{
return Numero;
}
}
class Program
{


static void Main(string[] args)
{

Random Aleatorio;

Dado dado1, dado2, dado3, dado4, dado5;
Aleatorio = new Random();
dado1 = new Dado(Aleatorio.Next(1, 6));
dado2 = new Dado(Aleatorio.Next(1, 6));
dado3 = new Dado(Aleatorio.Next(1, 6));
dado4 = new Dado(Aleatorio.Next(1, 6));
dado5 = new Dado(Aleatorio.Next(1, 6));

Console.WriteLine(dado1.VerNumero());
Console.WriteLine(dado2.VerNumero());
Console.WriteLine(dado3.VerNumero());
Console.WriteLine(dado4.VerNumero());
Console.WriteLine(dado5.VerNumero());
Console.ReadKey();
}
}
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