0

The user will be generating random numbers between 1 - 100, and may do so 100 times.

Each time they generate a random number, that number must not be generated again. Is there a way to do this? So far I have this:

function randomNumber() {
randomnumber = Math.floor(Math.random() * 100) + 1
console.log(randomnumber); 
}

Thanks

zgg6a
  • 269
  • 2
  • 3
  • 5
  • 1
    Maintain an array of generate numbers, when making the function call validate that – Satpal May 22 '18 at 12:45
  • So keep track and see if it has been used already, if it has, generate a new one. Other option is to generate the list up front and just pop them off the array as you use it. Plenty of shuffling algorithms out there to randomize an array. – epascarello May 22 '18 at 12:46
  • arr = [...Array(100).keys()]; function randomUniqueNumber() { randomnumber = Math.floor(Math.random() * 100); console.log(arr.splice(rNum, 1)[0]); } – mTv May 22 '18 at 13:02

1 Answers1

0

You can create a global array variable that will keep track of all the generated random numbers and check each time from that array to confirm that the number has been generated previously or not.

var generatedRandNumber = [];
function randomNumber() {
  randomnumber = Math.floor(Math.random() * 100) + 1;
  //number not generated previously
  if(generatedRandNumber.indexOf(randomnumber) === -1){
    generatedRandNumber.push(randomnumber);
    console.log(randomnumber); 
    console.log('all generated rand number '+ generatedRandNumber);
  }
}

randomNumber();
randomNumber();
randomNumber();
randomNumber();
Ankit Agarwal
  • 30,378
  • 5
  • 37
  • 62