Pascal/Turbo Pascal - generar numeros aleatorios

 
Vista:

generar numeros aleatorios

Publicado por palvji (12 intervenciones) el 15/08/2007 20:02:33
Buenas.
Mi pregunta es la siguiente:

Estoy haciendo un juego de cartas en pascal, y almaceno las cartas en una matriz Nx4, donde N es el numero de jugadores, de tal forma que cada fila tiene 4 cartas, y cada fila representa las cartas de un mismo jugador.
Tengo un procedimiento para barajar las cartas, y por barajar entendemos girar las cartas de cada columna un número ALEATORIO de veces.
Pues bien, me hice una funcion NumeroAleatorio:

FUNCTION Entero_Aleatorio:INTEGER;

BEGIN

Entero_Aleatorio:= 1+trunc (10*Random);

END;

Esta función crea un número aleatorio entre 1 y 10, pero no sé porqué cada vez que barajo las cartas, gira la primera y la segunda columna de la matriz el mismo número de veces.
La 3º y la 4º columna las gira un número aleatorio realmente, pero no se porqué las dos primeras siempre el mismo numero. Igual he hecho algo mal. Mi procedimiento barajar es:

FOR i:=1 TO Entero_Aleatorio DO
{Aqui giro una vez las cartas de una columna}

Y hago eso con las cuatro columnas. Si a alguien se le ocurre a qué puede deberse, que me indique algo, por favor.

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:generar numeros aleatorios

Publicado por Alexis (44 intervenciones) el 15/08/2007 20:42:12
Lo q se me ocurre es que no estas inicializando el generador de numeros aleatorios (Randomize) y por eso no te genera estos, y lo otro puede ser que en cuando llamas a la funcion random:

FUNCTION Entero_Aleatorio:INTEGER;

BEGIN

Entero_Aleatorio:= 1+trunc (10*Random);

END;

sinceramente primera vez que veo q en esta funcion se usa el trunc... intentalo sin eso a ver

Espero que esto te ayude....Suerte
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:generar numeros aleatorios

Publicado por palvji (12 intervenciones) el 16/08/2007 13:13:33
No lo había inicializado, pero no parece cambiar nada.
Lo de usar trunc viene porque necesito enteros, nada más.
Aún así gracias, creo que ya encontré el problema.
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:generar numeros aleatorios

Publicado por Diego Romero (996 intervenciones) el 16/08/2007 22:22:54
La función Random regresa el mismo tipo de dato que la variable que recibe.

A:=Random(10)+1;

Si A es de tipo integer, Random regresa un integer, si es de tipo Real regresa un tipo real. No hay necesidad de usar trunc().
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