La funzione Math.random in JavaScript consente di generare un numero decimale pseudo-casuale tra 0 compreso e 1 escluso.
Facciamo subito un esempio di utilizzo della seguente funzione.
Primo esempio d’uso della funzione math random in JavaScript
Fate la prova a cliccare sul pulsante sotto ‘genera casuale‘. Si genera un numero casuale tra 0 e 100 e se fate la prova a cliccare nuovamente sul pulsante chiaramente il numero cambia. Quindi di volta in volta si genera un nuovo numero.
Per implementare questo esempio sviluppiamo una funzione che richiami le funzioni Math.random() e Math.round().
La funzione Math.random() genera un numero pseudo-casuale in virgola mobile compreso tra 0 e 1, con 1 escluso.
Ricordiamo che la funzione Math.round() restituisce il valore di un numero approssimato all’intero ad esso più vicino.
Quindi per generare i numeri casuali da 0 a 100 usiamo Math.random()*100 e poi con la funzione Math.round arrotondiamo all’intero.
Potevamo utilizzare anche la funzione Math.floor ma Math.floor( Math.random()*100) genera dei numeri da 0 a 99 e quindi per avere i numeri da 0 a 100 avremmo dovuto scrivere: Math.floor(Math.random() * 101).
Ecco dunque la funzione JavaScript:
function casuale() {
num = Math.round(Math.random() * 100);
document.getElementById("casuale").innerHTML ="Numero casuale " + num;
}
Creiamo poi in html una casella di input di tipo button per il pulsante, a cui associamo l’evento onclick che richiama la funzione casuale().
Quindi ad esempio se voglio generare i numeri da 1 a 6 scrivo: Math.round(Math.random()*5)+1;
Secondo esempio d’uso della funzione Math.random in JavaScript
In questo secondo esempio chiediamo all’utente quanti numeri casuali vuole generare, trascrivendoli in una casella di input. Dunque clicchiamo sul pulsante e li generiamo.
Scrivi nella casella sotto quanti numeri vuoi generare.
Procediamo generando la funzione Math.random per generare i numeri casuali.
Innanzitutto controlliamo che il numero inserito nel campo quanti numeri generare sia compreso tra 1 e 100 con un if. Se lo è procediamo a generare i numeri, altrimenti diamo un messaggio d’avviso all’utente affinché inserisca un valore compreso tra 1 e 100.
Utilizziamo la funzione parseInt per restituire comunque un numero intero.
Quindi con un semplice ciclo for genero i numeri e li stampo separati da una virgola.
function casuali() {
n = parseInt(document.getElementById("quanti").value);
if (n > 0 && n <= 100) {
str = "";
for (i = 0; i < n; i++) {
num = Math.round(Math.random()*100 + 1);
if (i > 0) {
str += ", ";
}
str += num;
}
document.getElementById("casuali").innerHTML = "Numeri generati: " + str;
}
else {
document.getElementById("casuali").innerHTML = "Inserisci un numero maggiore di 0 e inferiore a 100";
}
}
In questa lezione svilupperemo un algoritmo sui numeri divisibili utilizzando Scratch 3.
Dato un numero intero N, stabilire se è divisibile per A.
Per risolvere questo algoritmo utilizzeremo le istruzioni di selezione e la funzione resto, così come nell’esempio precedente sui numeri pari.
Quindi procediamo in questo modo:
Se N/A dà resto 0 allora il numero N è divisibile per A, altrimenti il numero non è divisibile per A.
Numeri divisibili in Scratch
1 – Inizio: andiamo su situazionie scegliamo quando si clicca sulla bandiera verde.
2 – Andiamo su sensorie scegliamo il blocco chiedi ‘Come ti chiami?’ e attendi. Sostituiamo al posto di Come ti chiami? il testo Inserisci il numero.
3 – Andiamo su variabilie creiamo le variabili di nome N ed A, lasciando l’opzione per tutti gli sprite. (Per creare una nuova variabile vi ricordo il tutorial: variabili in Scratch 3.0)
4 -Trasciniamo il blocco porta N a.
5 – Inseriamo il blocco risposta che si trova nella sezione sensori.
6 – Ripetiamo i passi 4 e 5 per la variabile A.
7 – Andiamo su controllo e scegliamo il blocco se allora altrimenti.
8 – Operatori: trasciniamo il blocco con il simbolo = e trasciniamo all’interno il blocco resto della divisione di … diviso …
9 – Andiamo su variabilie trasciniamo N ed A negli spazi vuoti.
10 – Andiamo su dire e se il resto è zero allora visualizziamo in output il messaggio: ‘Il numero è divisibile‘.
11 – Sempre su dire, se il resto è diverso zero allora visualizziamo in output il messaggio: ‘Il numero non è divisibile‘.
12 – Fine: andiamo su controllo e scegliamo ferma tutto.
Ecco il codice completo:
Ecco il codice in linguaggio C++ sui numeri divisibili, per chi volesse consultarlo.
#include <iostream>
using namespace std;
int main() {
int N,A;
cout<<"Inserisci N: ";
cin>>N;
cout<<"Inserisci A: ";
cin>>A;
if(N%A==0)
cout<<"Il numero e' divisibile "<<endl;
else
cout<<"Il numero non e' divisibile "<<endl;
return 0;
}
1 – Inizio: andiamo su situazionie scegliamo quando si clicca sulla bandiera verde.
2 – Andiamo su sensorie scegliamo il blocco chiedi ‘Come ti chiami?’ e attendi. Sostituiamo al posto di Come ti chiami? il testo Inserisci il numero.
3 – Andiamo su variabilie creiamo la variabile di nome numero, lasciando l’opzione per tutti gli sprite. (Per creare una nuova variabile vi ricordo il tutorial: variabili in Scratch 3.0)
4 -Trasciniamo il blocco porta numero a.
5 – Inseriamo il blocco risposta che si trova nella sezione sensori.
6 – Andiamo su controllo e scegliamo il blocco se allora altrimenti.
7 – Operatori: trasciniamo il blocco con il simbolo = e trasciniamo all’interno il blocco resto della divisione di … diviso …
8 – Andiamo su variabilie trasciniamo numeroall’interno del blocco resto della divisione di ….
9 – Inseriamo 2 sempre all’interno del blocco, dopo diviso, perché dobbiamo trovare il resto della divisione per 2 e inseriamo 0 dopo l’uguale.
10 – Andiamo su dire e se il resto è zero allora visualizziamo in output il messaggio: ‘Il numero è pari‘.
11 – Sempre su dire, se il resto è diverso zero allora visualizziamo in output il messaggio: ‘Il numero è dispari‘.
12 – Fine: andiamo su controllo e scegliamo ferma tutto.
Ecco il codice completo:
Sviluppiamo il programma per i numeri pari e dispari anche in linguaggio C++, per chi volesse vedere l’analogia con i linguaggi di programmazione.
#include <iostream>
using namespace std;
int main() {
int numero;
cout<<"Numero: ";
cin>>numero;
if(numero%2==0)
cout<<"Il numero e' pari "<<endl;
else
cout<<"Il numero e' dispari "<<endl;
return 0;
}
Notate come venga utilizzato l’operatore % per indicare il resto della divisone.