Call random function Javascript, but not twice the same function
function, javascript, random
Solution
You can simply store the index of the last function called and the next time, get a random number which is not the last seen index, like this
var lastIndex, arr = [func1, func2, func3];
window.setInterval(function() {
var rand;
while ((rand = Math.floor(Math.random() * arr.length)) === lastIndex) ;
arr[(lastIndex = rand)]();
}, 5000);
The `while` loop is the key here,
while ((rand = Math.floor(Math.random() * arr.length)) === lastIndex) ;
Note: The `;` at the end is important, it is to say that the loop has no body.
It will generate a random number and assign it to `rand` and check if it is equal to `lastIndex`. If they are the same, the loop will be run again till `lastIndex` and `rand` are different.
Then assign the current `rand` value to the `lastIndex` variable, because we dont't want the same function to be called consecutively.
Problem
I use a function that randomly selects another function, which works. But sometimes it runs the same function twice or even more often in a row. Is there a way to prevend this? My current code: ``` window.setInterval(function(){ var arr = [func1, func2, func3], rand = Math.floor(Math.random() * arr.length), randomFunction = arr[rand]; randomFunction(); }, 5000); ``` Pretty simple so far. But how do I prevent func1 (for example) to run twice in a row