JSFiddle - React, Tailwind, and code Playground

JavaScript

for (var i = 0; i < 10; i++) {
	$("body").append("<p>"+RandomNumber(5, 15, [8,7,5,10])+"</p>")
}

// min - integer
// max - integer
// exclusions - array of integers
//						- must contain unique integers between min & max
function RandomNumber(min, max, exclusions) {
	  // As @Fabian pointed out, sorting is necessary 
    // We use concat to avoid mutating the original array
    // See: http://stackoverflow.com/questions/9592740/how-can-you-sort-an-array-without-mutating-the-original-array
    var exclusionsSorted = exclusions.concat().sort(function(a, b) {
    		return a - b
    });

    var logicalMax = max - exclusionsSorted.length;
  
	  var randomNumber = Math.floor(Math.random() * (logicalMax - min + 1)) + min;
  
    for(var i = 0; i < exclusionsSorted.length; i++) {
  	    if (randomNumber >= exclusionsSorted[i]) {
            randomNumber++;
        }
    }
  
    return randomNumber;
}