JavaScript - El valor mas alto, bajo y media de 20 números aleatorios

 
Vista:

El valor mas alto, bajo y media de 20 números aleatorios

Publicado por Diego (4 intervenciones) el 10/03/2021 13:02:34
Necesito entregar este ejercicio en clase y no se solucionarle
Diseñar un algoritmo que genere 20 números entre el I y el 99 y dar como resultados de salida Io
siguiente:
aj El valor más alto.
b) El valor más bajo.
c) El valor de la media aritmética
d) El valor de la media geométrica.

Gracias
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
Imágen de perfil de Gio
Val: 368
Bronce
Ha aumentado 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

El valor mas alto, bajo y media de 20 números aleatorios

Publicado por Gio (79 intervenciones) el 11/03/2021 15:17:19
Buenas Diego, los algoritmos se suelen escribir en pseudocódigo, pero como estás en el foro de JavaScript te lo escribiré en este lenguaje. Vamos por pasos.

ETAPA DE DECLARACIONES:

Lo primero que necesitamos es generar los 20 números aleatorios, para ello tienes que declarar una variable donde se van a almacenar todos estos números.
1
var numeros;

Ahora necesitamos declarar una función que nos genere números enteros aleatorios.
1
2
3
function random(min, max){
	return Math.floor(Math.random() * (max - min)) + min;
}

También crearemos una función para resolver raíces.
1
2
3
function raiz(x, n) {
    return Math.exp(Math.log(x) / n);
}

Hacemos uso de nuestra función "random()" dentro de un ciclo "for" para generar los números.
1
2
3
for(var i=0; i<20; i++){
	numeros[i]=random(1, 99);
}
Ahora nuestra variable "números" pasa a ser un array que almacena 20 números enteros aleatorios entre el 1 y el 99.

ETAPA DE PROCESAMIENTO:

Para encontrar el valor mas alto y el mas bajo, necesitamos comparar todos los números almacenados en el array "numeros" entre si, para ello necesitaremos realizar las comparaciones dentro de otro ciclo "for".
1
2
3
4
5
6
7
8
9
10
11
var mayor=0;
var menor=100;
 
for(var i=0; i<20; i++){
	if(mayor<numeros[i]){
		mayor = numeros[i];
	}
	if(menor>numeros[i]){
		menor = numeros[i];
	}
}

Ahora realizaremos los puntos C y D. Lo primero que hay que hacer, es crear una variable para almacenar el resultado de cada ejercicio con un valor inicial, en este caso usaremos el primer valor almacenado en el array "numeros" (numeros[0]) como punto de partida. Por lo tanto, el ciclo "for" deberá empezar desde la segunda posición del array (i = 1).
1
2
3
4
5
6
7
var mediaArit = numeros[0];
var mediaGeo = numeros[0];
 
for(var i=1; i<20; i++){
	mediaArit = mediaArit + numeros[i];
	mediaGeo = mediaGeo * numeros[i];
}
De esta forma, en la variable "mediaArit" almacenamos la suma y en la variable "mediaGeo" la multiplicación (producto) de los 20 números.

Ahora solo queda dividir en N (20) el valor almacenado en la variable "mediaArit" y aplicar el resultado almacenado en "mediaGeo" dentro de una raíz de radical N (20) haciendo uso de la funcio "raiz()" que creamos anteriormente.
1
2
mediaArit = mediaArit / 20;
mediaGeo = raiz(mediaGeo, 20);

ETAPA DE SALIDA (OUTPUT):

Ya generamos los 20 números aleatorios y trabajamos con ellos para obtener resultados así que ahora queda enseñarle de forma visual al usuario nuestros resultados. Para esto, crearemos una función que nos permita escribir de forma cómoda sobre el documento.
1
2
3
function escribir(msg){
	document.write(msg+"<br><br>");
}

Ahora hacemos uso de nuestra nueva función "escribir()".
1
2
3
4
5
escribir("Numeros aleatorios: "+numeros);
escribir("Numero mas alto: "+mayor);
escribir("Numero mas bajo: "+menor);
escribir("Media aritmetica: "+mediaArit);
escribir("Media geometrica: "+mediaGeo);

CODIGO RESULTANTE HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<script>
	var numeros = Array();
 
	function random(min, max){
		return Math.floor(Math.random() * (max - min)) + min;
	}
 
	function raiz(x, n) {
		return Math.exp(Math.log(x) / n);
	}
 
	for(var i=0; i<20; i++){
		numeros[i]=random(1, 99);
	}
 
	var mayor=0;
	var menor=100;
 
	for(var i=0; i<20; i++){
		if(mayor<numeros[i]){
			mayor = numeros[i];
		}
		if(menor>numeros[i]){
			menor = numeros[i];
		}
	}
 
	var mediaArit = numeros[0];
	var mediaGeo = numeros[0];
 
	for(var i=1; i<20; i++){
		mediaArit = mediaArit + numeros[i];
		mediaGeo = mediaGeo * numeros[i];
	}
 
	mediaArit = mediaArit / 20;
	mediaGeo = raiz(mediaGeo, 20);
 
	function escribir(msg){
		document.write(msg+"<br><br>");
	}
 
	escribir("Numeros aleatorios: "+numeros);
	escribir("Numero mas alto: "+mayor);
	escribir("Numero mas bajo: "+menor);
	escribir("Media aritmetica: "+mediaArit);
	escribir("Media geometrica: "+mediaGeo);
</script>

NOTA:
Esta no es la forma mas resumida y optima de realizar el código que cumpla con los puntos planteados. Pero decidí hacerlo de esta forma para no generar confusiones ya que veo que eres nuevo en este tema. Además, la materia de algoritmos se suele enseñar así.

Te adjunto el archivo desarrollado, solo tienes que descargarlo, descomprimirlo y abrir el archivo "20 numeros aleatorios.html" con tu navegador preferido.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

El valor mas alto, bajo y media de 20 números aleatorios

Publicado por Diego (4 intervenciones) el 12/03/2021 12:23:47
Ya tenia hasta el segundo apartado casi resuelto con bastante esfuerzo pero las medias no sabia como solucionarlas asique muchas gracias y efectivamente soy nuevo y aun no manejo muy bien este lenguaje.
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