Pascal/Turbo Pascal - necesito aprender a ocupar ramdom

   
Vista:

necesito aprender a ocupar ramdom

Publicado por rodrigo (2 intervenciones) el 14/05/2008 10:38:56
necesito ayuda como usar el randomize y random
quiero tirar 25 numeros aleatorios pero que ningno se repita
me podrian ayudar!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:necesito aprender a ocupar ramdom

Publicado por calimocho (1 intervención) el 14/05/2008 13:14:08
si son aleatorios , es posible que se repitan , por eso son aleatorios , si no serian consecutivos , u otra burrada , si no deberias crear un array y descartar
numeros entrantes si ya estan en la lista.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:necesito aprender a ocupar ramdom

Publicado por Dani (159 intervenciones) el 14/05/2008 13:39:57
Cada vez que generas un número aleatorio, comprueba los anteriores generados para ver si ya ha salido. Si está repetido, no te vale. Si no, te sirve. Puedes almacenarlos, como dice calimocho, en un array
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:necesito aprender a ocupar ramdom

Publicado por micropais (209 intervenciones) el 14/05/2008 17:44:14
hola rodrigo:

si no usas randomize antes de ramdom la secuencia de numeros aleatorios termina repitiendose , a lo mejor es eso a lo que te refieres , si no mira una forma de que no se repitan los numeros , con el programa siguiente , espero que sea lo que necesitas , esta comentado .
SALUIDOS de micropais.

--------------------------------------------------
uses crt;

const numeros_necesarios=25;
const rango=100; // seleccionamos numeros aleatorios entre 1 y rango
// ver nota mas abajo
var
numeros_ok:array[1..25] of integer; // para guardar numeros no repetidos
cnt_ok:byte; // ultimo numero introducido en numeros_ok
pre_numero:integer; // numero aleatorio para comprobar
cnt_bucle:integer;
a:integer;

// esta funcion se encarga de validar que el numero no este repetido
// en nuestro array de numeros aleatorios
function numero_ok(num:integer):boolean;
var cnt:integer;
begin
numero_ok:=true; // valor inicial
// writeln( num );
for cnt:=1 to cnt_ok do
begin
if numeros_ok[cnt]=num then
begin
numero_ok:=false; // ya estaba en la lista
break // rompemos el bucle , no hace falta comprobar mas
end;
end;

end;
// *****************************************************
begin

clrscr;
randomize; // reiniciamos , plantamos semilla
// NOTA: vamos a ejecutar un bucle , HASTA que rellenemos todo
// el array numeros_ok:array[1..25] of integer; como solo vamos a
// aceptar numeros que no esten repetidos el RANGO nunca debe ser
// inferior al numero de elementos del array , pues si no seria un
// bucle infinito.

cnt_ok:=1;
while cnt_ok<=25 do
begin
// obtenemos un numero
pre_numero:=random(rango)+1; // cuente desde 1 nunca cero
if numero_ok(pre_numero) then
begin
numeros_ok[cnt_ok]:=pre_numero;
cnt_ok:=cnt_ok+1;
end;
end;

writeln ('listado completo rango 1..',rango,'');
for a:=1 to 25 do
begin
write(a,'[',numeros_ok[a],'] ');
if ((a mod 5)=0 ) then writeln;// los mostramos de 5 en 5

end;

readln;
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:gracias

Publicado por rodrigo (2 intervenciones) el 14/05/2008 21:15:13
oh de erdad muchas gracias
espectacular
salio al tiro

agradecido

=D
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar