Programación General > Delphi

 Sobre Random

(1/1)

Perrero:
Como puedo hacer para que el random no me genere un numero que ya fue generado anteriormente???  :huh:

Enko:
Forma dificil y tediosa (no recomendada):

Metes los numeros generados en un arreglo y cada vez que generas un numero, te fijas si ya esta en el arreglo.


Forma mejor pero mas restringida:

Generas un vector que contenga todos los numeros que necesitas. Por ejemplo un Arreglo de 60 elementos con los numeros del 1 al 60

--- Código: Text --- var   Arreglo: array[1..60] of integer;   var i: Integer;begin  for i:=1 to 60 Arreglo[i] := i;end;  Luego, mediante random mezclas los numeros del arreglo intercambiandolos.
(supongo que podras hacer una funcion que intercamibe el valor de dos numeros,
la voy a llamar Intercambiar(A , B ).  a  ' a ' le asignda el valor de 'b' y a 'b' el valor de 'a'.

--- Código: Text --- for i:=1 to 60 do  Intercambiar(Arreglo[i], Arreglo[Random(60)+1]);  
Listo, tenes un arreglo con numeros del 1 al 60 intercambiados aleatoreamente.
Es como mezclar un mazo de naipes.

Enko:
Tambien así podes mezclar Matrices, en el ejemplo 10x10:

--- Código: Text --- for i:=1 to 10 do  for j:=1 to 10 do      Intercambiar(Matriz[i,j], Matriz[Random(10)+1, Random(10)+1]);  
el procedimiento intercambiar ser'ia

--- Código: Text --- procedrue Intercambiar(var A,B: Integer);var     C:Integer;begin   C := A;   A := B;   B := C;end;  

Navegación

[0] Índice de Mensajes

Ir a la versión completa