Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Funcion Random no respeta rango (https://www.clubdelphi.com/foros/showthread.php?t=78853)

fpirovani 21-05-2012 15:18:39

Funcion Random no respeta rango
 
Hola a todos!
Les cuento que soy medio novato en esto de la programacion.
Me surgio un problema y la verdad no se que estoy haciendo mal.
Necesito obtener un numero aleatoreo entre 0 y 9. para ello uso el siguiente codigo

Código Delphi [-]
 Randomize;
 Variable := random(9);

Pero resulta que me devuelve todos numeros mayores que 10, siendo que el limite es 9.
Tampoco se porque motivo los numeros que me devuelve nunca llegan al 50.

¿Estoy haciendo algo mal? ¿a alguien le paso?

Desde ya muchas gracias.
Saludos!

Casimiro Notevi 21-05-2012 15:56:33

Bueno, todo tiene su explicación :), aunque estaría bien ver tu código, para poder ayudarte según lo que estás haciendo :)

fpirovani 22-05-2012 16:17:53

perdon por la tardanza en responder, es que tuve un problema con mi cuenta y no podia acceder.

no se en que va, pero cree un formulario nuevo para probar y con el mismo codigo anda. la verdad que no entiendo en que le erre.

el codigo es muy simple.

Código Delphi [-]
procedure TForm1.BotonGenerarNumeroClick(Sender: TObject); 
begin  
  Randomize;  
  MostrarNumero.Caption := IntToStr(random(9)); /// muestro en un label el numero generado 
end;

Casimiro Notevi 22-05-2012 16:37:07

No entiendo bien lo que dices, random(9) debe devolverte valores entre 0 y 8. Y hablas de números que no pasan de 50 ¿?

Mira esta página de ayuda.

ecfisa 22-05-2012 21:34:47

Cita:

Empezado por fpirovani (Mensaje 433195)
perdon por la tardanza en responder, es que tuve un problema con mi cuenta y no podia acceder.

no se en que va, pero cree un formulario nuevo para probar y con el mismo codigo anda. la verdad que no entiendo en que le erre.

el codigo es muy simple.

Código Delphi [-]
procedure TForm1.BotonGenerarNumeroClick(Sender: TObject); 
begin  
  Randomize;  
  MostrarNumero.Caption := IntToStr(random(9)); /// muestro en un label el numero generado 
end;

Hola fpirovani.

Del modo que utilizas Random en tu código te va a generar valores enteros comprendidos entre cero y ocho, es decir que 0 <= Random(n) < n.

Otra forma de utilizarlo es multiplicar el valor máximo deseado por el resultado de la función Random sin argumentos. En este caso se da que 0 <= Random < 1, el resultado obtenido es de punto flotante por lo que tendrías que usar la función Round para utilizar luego IntToStr:
Código Delphi [-]
  Label1.Caption:= IntToStr(Round(Random* 9));

Mirando tu código, no veo la posibilidad que estés obteniendo un valor inferior a cero o superior a ocho...

Saludos.


La franja horaria es GMT +2. Ahora son las 05:53:20.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi