
Problemas con Randomize y Random
Publicado por Francisco (2 intervenciones) el 01/08/2014 05:36:57
Hola, ¿cómo están? Hace un tiempo empecé a aprender Pascal y si bien no avancé tanto todavía, ya aprendí algunas cosas muy útiles, algunas gracias a esta página que vengo viendo.
Me encontré con un problema con Randomize y Random, que hasta ahora me venían funcionando muy bien :S
El problema es cuando creo un procedimiento o unit que utilice estas funciones para generar números aleatorios. Y aplico el procedimiento a dos variables distintas. El problema es que me arrojan SIEMPRE el mismo valor, o sea, los números generados por "random" son siempre los mismos. Acá hice un programa muy simplificado y sin mucha utilidad pero para que quede bien ilustrado el problema, a ver si alguien me puede ayudar a solucionarlo :/
"num" y "num2" son dos variables distintas que inicialmente les doy valores diferentes. Cuando paso sus valores por el procedimiento que lleva el randomize y random dentro, ambas variables terminan valiendo lo mismo, es decir, el procedimiento no vuelve a generar valores aleatorios para "num2", sigue usando los valores aleatorios que utilizó para "num". Cada vez que echo a correr este programa, o "num" y "num2" valen ambos 99, o 44, o 1, o 57, o 60, o 89, o 87 o el número que sea, pero la cuestión es que siempre valen lo mismo uno con respecto al otro. Intenté poner "randomize" por todos lados, entre las dos llamadas al procedimiento que hago, dentro del procedimiento al principio y al final, pero nada funciona. No logro entender cual es el problema. Desde ya muchas gracias :)
Me encontré con un problema con Randomize y Random, que hasta ahora me venían funcionando muy bien :S
El problema es cuando creo un procedimiento o unit que utilice estas funciones para generar números aleatorios. Y aplico el procedimiento a dos variables distintas. El problema es que me arrojan SIEMPRE el mismo valor, o sea, los números generados por "random" son siempre los mismos. Acá hice un programa muy simplificado y sin mucha utilidad pero para que quede bien ilustrado el problema, a ver si alguien me puede ayudar a solucionarlo :/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Program random1;
var
num: integer;
num2: integer;
procedure aleatorio (var n: integer);
begin
randomize;
n:= random (100) + 1;
end;
begin
num:= 5;
num2:= 10;
writeln ('"num" vale: ',num,'.');
writeln ('"num2" vale: ',num2,'.');
writeln;
aleatorio (num);
aleatorio (num2);
writeln ('"num" ahora vale: ',num,'.');
writeln ('"num2" ahora vale: ',num2,'.');
writeln;
readln;
end.
"num" y "num2" son dos variables distintas que inicialmente les doy valores diferentes. Cuando paso sus valores por el procedimiento que lleva el randomize y random dentro, ambas variables terminan valiendo lo mismo, es decir, el procedimiento no vuelve a generar valores aleatorios para "num2", sigue usando los valores aleatorios que utilizó para "num". Cada vez que echo a correr este programa, o "num" y "num2" valen ambos 99, o 44, o 1, o 57, o 60, o 89, o 87 o el número que sea, pero la cuestión es que siempre valen lo mismo uno con respecto al otro. Intenté poner "randomize" por todos lados, entre las dos llamadas al procedimiento que hago, dentro del procedimiento al principio y al final, pero nada funciona. No logro entender cual es el problema. Desde ya muchas gracias :)
Valora esta pregunta


0