Hoe krijg ik een willekeurig getal in LUA
FIBARO LUA | Een willekeurig getal maken
Soms wil je een willekeurig getal gebruiken in je code. Bijvoorbeeld bij het maken van een niet-thuis simulatie.
maar hoe doe je dat? Het antwoord is simpel, met de functie math.random().
In dit geval krijgt de variabele outcome een willekeurige waarde tussen 0 en 1.
Er zijn nu 2 uitdagingen,
Alleen krijg hij iedere keer dezelfde waarde... Niet zo random dus. En het is altijd een waarde tussen 0 en 1.
Ook niet handig.
Het tweede probleem is eenvoudig op te lossen door het getal te vermenigvuldigen met een waarde (in dit geval max_value) zodat je bereik ligt tussen 0 en de max_value.
Het tweede probleem (dat je telkens dezelfde waarde krijgt) is ook eenvoudig op te lossen, als je het antwoord maar weet...
En het antwoord is math.randomseed(os.time()). Om uit te leggen wat het precies doet is best complex, maar als je het ervoor zet krijg je in ieder geval iedere keer een andere waarde.. Handig om te vermelden in een FAQ.
Hieronder een stukje code om het te demonstreren.
Je ziet ook gelijk 2 andere functies:
math.floor() en math.ceil()
Deze functies zorgen ervoor dat de getallen achter de komma verdwijnen, ieder op hun eigen manier.
Op regel 1 staat het getal niet afgerond
Op regel 2 staat het getal na bewerking door math.floor()
Op regel 3 staat het getal na bewerking door math.ciel()
Het verschil is 1, dat komt door de afronding.
Als je de scene meerdere keren start krijgen we steeds andere waardes! Precies wat we willen.
Haal je nu de math.randomseed(os.time()) weg dan krijg je iedere keer hetzelfde getal.
Tot zover deze korte wiskundeles!