user5451365 user5451365 - 12 days ago 6
Javascript Question

How do I get a previous value of a random generated numbers 1 to 10?

I have a random generator from 1 to 10 that produces non repeating values
I am trying to get the previous value.
So if current is 5 and then 8
Previous 8 and next is 9, etc

This is my code:

var randomNumbers = [];
var numRandoms = 11;
var myVar = setInterval(randomUnique1to10, 5000);

function randomUnique1to10() {
// refill the array if needed
if (!randomNumbers.length) {
for (var i = 1; i < numRandoms; i++) {
randomNumbers.push(i);
}
}
var index = Math.floor(Math.random() * randomNumbers.length);
var val = randomNumbers[index];

if (i === 1) { // i would become 0
i = randomNumbers.length; // so put it at the other end of the array
}
i = i - 1; // decrease by one
previous = randomNumbers[i]; // give us back the item of where we are now


randomNumbers.splice(index, 1);


Thank you

Answer

This is totally what you're looking for. Hope it helps!.

var randomNumbers = []; 
var numRandoms = 11; 
var myVar = setInterval(randomUnique1to10, 1000); 

shuffle = function(o){ 
	for(var j, x, i = o.length; i; j = parseInt(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
		return o;
};
var finalArray = shuffle([1, 2, 3, 4,5,6,7,8,9,10]);
function randomUnique1to10() { 
// refill the array if needed 
if (!randomNumbers.length) { 
	for (var i = 1, l = 11; i < l; i++) { } 
} 

// var finalArray = shuffle(randomNumbers);
document.write(finalArray + "<br/>");
randomNumbers = finalArray;
var index = Math.floor(Math.random() * randomNumbers.length); 
var val = randomNumbers[index]; 
if (i === 1) { // i would become 0 
i = randomNumbers.length; // so put it at the other end of the array 
} 
x = index-1; // decrease by one 
current = randomNumbers[randomNumbers.length - 1]; // give us back the item of where we are now 
previous = randomNumbers[randomNumbers.length - 2]; 
if(previous === undefined) 
{ 
	previous = "n/a"; 
}

randomNumbers.pop(); 
if(randomNumbers.length <= 0){
	finalArray = shuffle([1, 2, 3, 4,5,6,7,8,9,10]);
}

document.write("Current >> " + current + " and previous = " +previous + "<br/>") 
}

Comments