Random number - hoe haal je een willekeurig gekozen getal op?

Willekeurige getallen

Er zijn situaties dat je een willekeurig getal ophaalt, denk bijvoorbeeld aan Yahtzee waarbij je 5 dobbelstenen hebt die willekeurig een getal van 1 tm 6 geven. Ook dat kan je programmeren in JavaScript.

De basis voor een willekeurig getal is de Math functie Math.random()

const myNumber = Math.random();
Bovenstaande code geeft een getal terug tussen de 0 en de 1 (het is nooit 0 of 1) met veel getallen achter de komma, probeer het maar eens.

Getal 1 of hoger?

Om een getal boven de 1 te krijgen moet je een oplossing gebruiken met wat rekenkracht. Zie onderstaande code:

function getRandomInt(max) {
  return Math.random() * max;
}
const myNumber = getRandomInt(9);
console.log(myNumber) //geeft een getal tussen de 0 en de 9 en nooit 0 en nooit 9.

Hoe werkt dit?

De gemaakte functie maakt een willekeurig getal (dus tussen de 0 en de 1, en nooit 0 of 1) en dat doen we keer 9. Als het willekeurige getal 0.45683 zou zijn, dan geeft de functie 0.45683 * 9 = 4.11147 terug.

Getal 1 of hoger, zonder cijfers achter de komma?

In het voorbeeld met de dobbelstenen willen we eigenlijk een heel getal en geen getallen achter de komma terug. In dat geval heeft Math nog een oplossing: Math.floor(); Die rond het getal af naar beneden (altijd) dus Math.floor(3.999 is 3).

function getRandomInt(max) {
  return Math.floor(Math.random() * max);
}
const myNumber = getRandomInt(9);
console.log(myNumber) //geeft een getal tussen de 0 en de 9 en nooit 0 en nooit 9.
Deze functie lijkt sterk op de vorige, maar zie het verschil met de Math.floor() oplossing.

Nog meer Math opties

Het Math object heeft nog een aantal handige oplossingen:
            Math.floor() - Afronden naar beneden (4.999 wordt 4)
            Math.ceil() - Afronden naar boven (4.001 wordt 5)
            Math.round() - Afronden (4.49 wordt 4, 4.501 wordt 5)
            Math.PI - Dit geeft het getal PI met 15 getallen achter de komma - 3.141592653589793
        
Wil je meer weten? Kijk dan op Geeks for Geeks over ES6 Math