Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
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: 26
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
  #2  
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
  #3  
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
  #4  
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
  #5  
Antiguo 23-04-2006
Turboleta Turboleta is offline
Miembro
 
Registrado: may 2003
Ubicación: Valencia
Posts: 26
Poder: 0
Turboleta Va por buen camino
Números aleatorios sin repetición

Tambien se puede podría hacer otra cosa.
1º declarar un array para contener lo números que van saliendo, sin repetir.
2º declarar una variable de tipo conjunto para poder controlar si y han salido antriormente.Poco más o menos así:

Código Delphi [-]
var NumOk: array [1..20] of integer;
     YaUtiliados: set of Byte; // de 0..255
     n, num: integer;
begin
    YaUtilizados:= [] // conjunto vacío; no hay números
    randomize;
    for n:= 1 to 20 do
       begin
          Repeat
             num:= random(20) + 1;
          Until not (num in YaUtilizados);// se comprueba si el número ya existe en el conjunto
               
          NumOk[n]:= num; // Si el núnero no ha sido utilizado anteriormente, se guarda en el array
          YaUtilizados:= YaUtilizados + [num]  // y a la vez se añade al conjunto
      end;

Bueno, es posible que haya alguna incorrección, pero básicamente esta es la idea. Así no tendrías ningún número repetido.

Espero te sirva la idea.
Responder Con Cita
  #6  
Antiguo 24-04-2006
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 27
Delphius Va camino a la fama
Espero que les sirva...

Bueno, la mejor manera de obtener números "aletorios" (y sencilla) es emplear un generador de número aleatorios por el método multiplicativo de amplitud máxima.
Yo tuve que codificar estos algoritmos... es más.. tuve algunos inconvenientes y aquí me ayudaron a solucionarlos. En ese entonces, yo había subido el código... pero creo que a causa de la pérdida de algunos datos del disco del servidor se perdió ese hilo. Le paso un zip con el código. Veanlo...

Se puede conseguir que se generen números que no se repitan en la serie (amplitud máxima) si se consigue que exista una relación de números primos entre el valor m (módulo) y el a (multiplicativo).
Archivos Adjuntos
Tipo de Archivo: zip GNA.zip (2,4 KB, 188 visitas)
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #7  
Antiguo 24-04-2006
edusus edusus is offline
Miembro
 
Registrado: ene 2006
Posts: 47
Poder: 0
edusus Va por buen camino
num. aleatorios sin repetición

Hola Turboleta,
he copiado tu código pero lo que no encuentro la forma de hacer es ver el contenido del conjunto yautilizados. Puedes decirme como hacer? y si no te importa otra pregunta. ¿Si lo que yo quiero es obtener por ejemplo 5 números aleatorios de un conjunto del 1 al 20, cómo lo podría hacer?
Muchas gracias por tu ayuda.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 12:03:33.


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