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 22-04-2006
edlm edlm is offline
Registrado
 
Registrado: abr 2006
Posts: 7
Poder: 0
edlm Va por buen camino
sacar numeros al azar

hola, quiero saber si se puede sacar 20 numeros al azar sin que se repitan, es decir con la funcion random dentro de un for puedo obtener numeros al azar pero con frecuencia estos numero se repiten, habrá alguna forma para evitarlo o tendra que hacerse con sentecias de If, si aguien sabe de alguna forma para hacerlo agradeceria el consejo.

Gracias
Responder Con Cita
  #2  
Antiguo 22-04-2006
alextmb alextmb is offline
Miembro
 
Registrado: nov 2005
Posts: 14
Poder: 0
alextmb Va por buen camino
hola amigo yo estoy en las mismas mira a ver si entrelos dos lo sacamos o alguien nos auxilia, tengo que hacer que en 40 images, que tengo en un arreglo llamado Carta asignarles un numero al azar del uno al 20 pero solo se pueden repetir una vez mira lo que he hecho
Código Delphi [-]
for a:=1 to 20 do
begin
   Repeat
      fin:=20
      Randomize;
      num:=random(20)+1;
      z:=true;
      for c:=1 to fin do
      begin
        if num=Carta[c].Tag then
        begin
          z:=false;
          fin:=0;
        end
      end;
    Until(z=true);
    Carta[a].Tag:=num;
end;

avisame que te parece

Última edición por alextmb fecha: 22-04-2006 a las 22:31:52.
Responder Con Cita
  #3  
Antiguo 22-04-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
En un juego de cartas yo usaba este metodo para barajar. A lo mejor te sirve:

Código Delphi [-]
var
  Baraja: array[1..40] of Integer;
  i,j,k: Integer;
begin
  // Colocamos todas las cartas por orden
  for i:= 1 to 40 do
  begin
    Baraja[i]:= i;
  end;
  // Y ahora las barajamos
  Randomize;
  for i:= 1 to 40 do
  begin
    j:= Random(40)+1;
    k:= Baraja[i];
    Baraja[i]:= Baraja[j];
    Baraja[j]:= k;
  end;
end;
Responder Con Cita
  #4  
Antiguo 23-04-2006
edlm edlm is offline
Registrado
 
Registrado: abr 2006
Posts: 7
Poder: 0
edlm Va por buen camino
Alextmb, tu codigo casi no lo comprendo, ¿a ti te funciona?, analisando el de el amigo seoane ese me ha dejado una idea mas clara, debido a que talvez hacer que con un random obtengamos 20 numeros que no se repitan seria muy compicado, parece mejor la idea de desordenar un arreglo de 20 numeros para que el orden sea distinto cada vez, así como el lo hizo al barajear las cartas yo lo implementare asi si tienen algun comentario me avisan.
Responder Con Cita
  #5  
Antiguo 23-04-2006
alextmb alextmb is offline
Miembro
 
Registrado: nov 2005
Posts: 14
Poder: 0
alextmb Va por buen camino
estoy de acuerdo contigo me complique mucho la vida. Pero bueno de los errores se aprende.
Responder Con Cita
  #6  
Antiguo 23-04-2006
edusus edusus is offline
Miembro
 
Registrado: ene 2006
Posts: 47
Poder: 0
edusus Va por buen camino
20 números diferentes

Pienso que la solución puede ser la siguiente.

begin
randomize;
x:= random(20)+ 1;
Label (1 to 20). caption:= x;
If Tlabel. any caption has repeated number do
begin
Replace that number for another;
end;
end;


No os enfadeis amigos, es una broma jajajaja
Responder Con Cita
  #7  
Antiguo 31-05-2012
silem23 silem23 is offline
Registrado
 
Registrado: mar 2008
Posts: 1
Poder: 0
silem23 Va por buen camino
Increible que este tema aun sigue vigente, muchas gracias a todos los que en su momento se tomaron el tiempo para responder el hilo que me ha sido de mucha ayuda saludos
Responder Con Cita
  #8  
Antiguo 31-05-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.055
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Todos los hilos siguen vigentes, fíjate que es del 2006, pero no acostumbramos a cerrarlos por si surgen nuevas propuestas, ideas, etc. o como tu caso, aunque sea para agradecir de que te ha sido de ayuda.
Saludos.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Sacar programa a Internet. torito Varios 1 04-01-2006 17:47:15
Sacar generators y sus valores Delfino SQL 0 12-10-2005 12:50:45
sacar el valor qrexpr rinaib Impresión 1 07-06-2005 18:00:01
Sacar el SERVER NAME jafl1965 Varios 1 20-04-2005 19:56:54
De donde no hay no se puede sacar tcp_ip_es Humor 0 21-07-2004 09:39:22


La franja horaria es GMT +2. Ahora son las 07:34:28.


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