Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-11-2005
chechu chechu is offline
Miembro
 
Registrado: oct 2004
Ubicación: argentina
Posts: 26
Poder: 0
chechu Va por buen camino
random

tengo otro problema con el siguiente codigo:
lo que quiero es obtener un randomico entre 0 y 1 , segun eso evaluarlo de esta manera pero me da desde lo marcado con rojo que son tipos incompatibles sera el problema con el random? desde ya gracias


randomize;
u:= random(random(1));
if (u < 0.1) then
N:=0
else
if (0.1<= u < 0.2)then
N:=1
else
if (0.2<= u < 0.45)then
N:=2
else
if (0.45<= u < 0.75)then
N:=3
else
if (0.75<= u < 1)
N=4;
Responder Con Cita
  #2  
Antiguo 24-11-2005
Avatar de epuigdef
epuigdef epuigdef is offline
Miembro
 
Registrado: jul 2005
Posts: 196
Poder: 19
epuigdef Va por buen camino
Prueba cambiando el código por:


Código Delphi [-]
randomize;
u:= random(random(1));
if (u < 0.1) then
N:=0
else
if (u>=0.1) AND (u < 0.2)then
N:=1
else
if (u >=0.2) AND (u < 0.45)then
N:=2
else
if (u >= 0.45) and (u < 0.75)then
N:=3
else
if (u >= 1)
N=4;
Edu
Responder Con Cita
  #3  
Antiguo 24-11-2005
chechu chechu is offline
Miembro
 
Registrado: oct 2004
Ubicación: argentina
Posts: 26
Poder: 0
chechu Va por buen camino
funciona gracias

gracias por la ayuda edu
Responder Con Cita
  #4  
Antiguo 24-11-2005
Avatar de Thales
Thales Thales is offline
Miembro
 
Registrado: ago 2005
Posts: 48
Poder: 0
Thales Va por buen camino
Puedes simplificar el código aún más:

Código Delphi [-]
  randomize;
  u:= random(random(1));
  if (u < 0.1) then
    N:=0
  else if (u < 0.2)then
    N:=1
  else if (u < 0.45)then
    N:=2
  else if (u < 0.75)then
    N:=3
  else if (u >= 1)
    N=4;

aunque no entiendo muy bien el porqué del doble uso de random
Responder Con Cita
  #5  
Antiguo 24-11-2005
chechu chechu is offline
Miembro
 
Registrado: oct 2004
Ubicación: argentina
Posts: 26
Poder: 0
chechu Va por buen camino
thales

gracias por la sugerencia lo del random doble no me daba error solo queria asegurar la aleatoriedad pero ya se lo saque
Responder Con Cita
  #6  
Antiguo 24-11-2005
Avatar de Thales
Thales Thales is offline
Miembro
 
Registrado: ago 2005
Posts: 48
Poder: 0
Thales Va por buen camino
Otra cosa más que no te comenté antes: En el código anterior la variable N nunca llega a tomar el valor 4 porque el número aleatorio que generas siempre es menor que 1, así que el último if sobra.

Un saludo
Responder Con Cita
  #7  
Antiguo 24-11-2005
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Cita:
Empezado por chechu
randomize;
u:= random(random(1));
if (u < 0.1) then
N:=0
else
if (0.1<= u < 0.2)then
N:=1
else
if (0.2<= u < 0.45)then
N:=2
else
if (0.45<= u < 0.75)then
N:=3
else
if (0.75<= u < 1)
N=4;
Si tu resultado final va a ser un número al azar entre 0 y 4... porqué no haces directamente:
Código Delphi [-]
uses
  Math;
...
begin
  Randomize;
  N := RandomRange(0, 5);
end;

Cita:
Empezado por chechu
gracias por la sugerencia lo del random doble no me daba error solo queria asegurar la aleatoriedad
Con eso lo único que logras es que la semilla cambie una vez mas, pero la serie seguirá siendo cíclica!

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 14:45:37.


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
Copyright 1996-2007 Club Delphi