Ver Mensaje Individual
  #12  
Antiguo 19-10-2016
Reasen Reasen is offline
Miembro
NULL
 
Registrado: dic 2015
Ubicación: Barcelona
Posts: 140
Reputación: 9
Reasen Va por buen camino
Cita:
Empezado por danielmj Ver Mensaje
hola roman, eso ya esta arreglado y sigue sin funcionar como deberia. Que la sintaxis no sea muy estetica tiene solución, pero el sacar 6 numeros del 1 al 49 en un for del 1 al 100 (por ejemplo) y que esos 6 numeros no se repitan es mas complicado que hacer la gran piramide! (esto ultimo es una prueba de que ya me tiene frustrado el dichoso programa).

Hola Reasen, pues basicamente lo que pretendo es eso de arriba, sacar 6 numeros aleatorios del 1 al 49 sin que se repitan y los vaya almacenando en un listview de 100 posiciones (o 50.000 estos valores son de ejemplo). Después de buscar y buscar informacion y gente con el mismo problema que yo en distintos foros, di con la web de trucomania y me ofrecia la posibilidad de usar una unidad que se encarga de todo pero como puedes ver, NO me funciona.

Un saludo.

Veamos si esto te sirve:

Añade una variable global || Acumulador: TStringList;

Código Delphi [-]
function RandomRange(const AFrom, ATo: Integer): Integer;
begin
  if AFrom > ATo then
    Result := Random(AFrom - ATo) + ATo
  else
    Result := Random(ATo - AFrom) + AFrom;
end;

function NumerosAleatorios(Minimo, Maximo: integer): string;
var
  NumOk:Boolean;
  Numero: string;
begin
  Randomize;
  repeat
    Numero := IntToStr(RandomRange(Minimo, Maximo));
    if pos(Numero, Acumulador.Text) = 0 then
    begin
      result := Numero;
      Acumulador.Add(Numero);
      NumOk:=True;
    end;
  until NumOk;
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
  Acumulador := TStringList.Create;
end;

//ejemplo de uso: showmessage(NumerosAleatorios(100,220));
Responder Con Cita