Esercizi su arrays

Primo esercizio

Data una sequenza di numeri a0, a1, a2, ... an-1, la media mobile di lunghezza k in posizione i è definita come la media dei k elementi nelle posizioni ai, ai+1, ..., ai+k-1. È possibile definire la media mobile di lunghezza k solo per le posizioni da 0 a n-k.

Scrivere un metodo che, dati un intero k e un array di double che rappresenta una sequenza, restituisce la sequenza di tutte le medie mobili di lunghezza k per le posizioni da 0 a n-k, dove n è la lunghezza dell'array.

Utilizzando il metodo precedente, scrivere un altro metodo che, dato un array e un intero k, restituisce la posizione in corrispondenza della quale la media mobile di lunghezza k è massima.

Verificare il funzionamento del metodo che trova la posizione di media mobile massima, applicandolo a un array di valori double pseudocasuali la cui lunghezza è definita dall'utente.

Secondo esercizio

Si vuole realizzare una simulazione di lanci di moneta (ciascuna con esito T o C). In particolare, si vuole studiare come varia il massimo numero di esiti consecutivi uguali al variare della lunghezza della sequenza di estrazioni. Ad esempio, nella sequenza di lunghezza 10:
T C C C T T C T C C
si hanno 3 esiti consecutivi uguali (C C C), e ci si aspetterebbe che su sequenze più lunghe tale numero tenda ad aumentare. Ad esempio, nella sequenza di lunghezza 20:
T C C T C C C T T T T C C C C T C T T T
osserviamo 4 esiti consecutivi uguali.

Scrivere un programma che esegue simulazioni di lanci di moneta di lunghezza 10, 20, 40, 80, ..., 327680, 655360, e in corrispondenza di ogni simulazione stampa il massimo numero di esiti consecutivi uguali. I lanci sono simulati attraverso chiamate del metodo Math.random().