0

In the code below, the function randomBetween generates a random number and the function randomBetweenAndExcluding generates another random number distinct from the first:

$(document).ready(function () {

function randomBetween (min, max) {
  var ceiling = max + 1;
  return Math.floor(Math.random() * (ceiling - min)) + min;
}

function randomBetweenAndExcluding (min, max, excluding) {
  var random;
  do {
    random = randomBetween(min, max);
  } while(random === excluding);
  return random;
}

ISSUE: I'm trying to expand this so that randomBetweenAndExcluding excludes any numbers that exist within an array. Something that essentially codes for the following (portions that need changing placed in asterisks):

$(document).ready(function () {

function randomBetween (min, max) {
  var ceiling = max + 1;
  return Math.floor(Math.random() * (ceiling - min)) + min;
}

function randomBetweenAndExcluding (min, max, ***[ARRAY WITH X # of ELEMENTS]******) {
  var random;
  do {
    random = randomBetween(min, max);
  } while(random === ***ANY ELEMENT WITHIN THE ARRAY****);
  return random;
}

I tried playing around with indexOf and includes but have not had any luck.

Thanks!

R B
  • 15
  • 2
  • Just port some of the other languages: https://stackoverflow.com/questions/6443176/how-can-i-generate-a-random-number-within-a-range-but-exclude-some – Caramiriel Dec 29 '17 at 21:44

1 Answers1

1

The following works for me:

function randomBetween (min, max) {
  var ceiling = max + 1;
  return Math.floor(Math.random() * (ceiling - min)) + min;
}

function randomBetweenAndExcluding (min, max, array) {
  var random;
  do {
     random = randomBetween(min, max);
  } while(array.includes(random));
  return random;
}

 array = [1,2,5];
 alert(randomBetweenAndExcluding(1,5,array))

You can check it out at this JSFiddle: https://jsfiddle.net/scz1n8a9/

nachtm
  • 26
  • 3
  • I had been making everything unnecessarily complicated; this is wonderfully simple. Thank you for the excellent response! – R B Dec 29 '17 at 22:29