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
Ir a la versión completa