[ Foro de Pascal ]

sentencia random y ambigüedad de la consigna

12-Dec-2010 16:14
Emanuel Bazan
3 Respuestas

Hola estimados foristas!!!
Tengo la siguiente consigna: "Problema 9.6.  En este problema usaremos la sentencia random (sin argumentos) de Turbo Pascal que da un número aleatorio real entre 0 y 1.
a)  Hacer un programa que el?a aleatoriamente el número 1 aproximadamente el 45 % de las veces, el número 2 el 35 % de las veces, el 3 el 15 % de las veces y el 4 el 5 % de las veces. Sugerencia: considerar las sumas parciales
.45, .45 + .35, . . .

Mis dudas:
1º- la consigna dice de las "veces" pero cuantas son esas veces no lo aclara y tampoco dice si lo tiene que ingresar el usuario ono.
2º- realice un bosquejo de un programa pero utilizo random(5)+1, para que salgan los números del 1 al 5. y un lazo for-to-do de 1 a n(la cantidad de números ingresados por el usuario) y un lazo while con contador para restringir la impresión el porcentaje requerido...Pero me parece que no es lo que me piden, ya que no estoy utilizando lo que esta en la consigna (random sin argumento y las sumas parciales).
3º- Para adaptarme a la consigna pienso que se puede utilizar el random sin argumento de la siguiente manera:

 if ((random>= 0) and (random<0.45)) then writeln( '1');
  if ((random>= 0.45) and (random<0.80)) then writeln( '2');
   if ((random>= 0.80) and (random<0.95)) then writeln( '3')
    else writeln('4')

pero en este caso no sabría como parar el programa...

Muchas gracias!!


12-Dec-2010 19:47
Nacho Cabanes (+31)

Tu acercamiento (3) es el bueno. Esa es la forma correcta de generar números al azar con las probabilidades que te piden.

Pero no debes generar distintos números al azar, sino ver entre qué valores se encuentra un único número, así:

numeroAzar := random;
if ((numeroAzar >= 0) and (numeroAzar < 0.45)) then writeln( '1');
 else if ((numeroAzar >= 0.45) and (numeroAzar < 0.80)) then writeln( '2');
   else if ((numeroAzar >= 0.80) and (numeroAzar < 0.95)) then writeln( '3')
     else writeln('4')

No entiendo a qué te refieres con "parar el programa".


12-Dec-2010 20:12
Emanuel Bazan

Hola Nacho Cabanes!!!
Con parar el programa entiendo que cuando se ejecute la lista de números en la pantalla deje en algún momento de generarlos, ¿Genera una lista o un solo número en cada ejecución?
Saludos.


12-Dec-2010 20:26
Antonio P.G.

Hola.

Yo tampoco entiendo lo de "parar el programa".

No sé, simplemente habría que meter eso en un bucle que se repitiese un número de veces indicado por el usuario, o algo así.

Sería interesante repetirlo muchas veces e ir contando cuántos unos, doses, treses y cuatros han salido, y ver que los porcentajes se aproximan a los pedidos por el enunciado.

¡Hasta luego!






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)