How to create the random number to assign in java script array with following condition.
- need to create random number with (1-28).
- Number allowed to repeat 2 times. (EX: 1,3,5,4,5). .
How to create the random number to assign in java script array with following condition.
 
    
    Simple solution for adding a number to an array based on your criteria:
function addNumberToArray(arr){
    const minValue = 1;
    const maxValue = 28;
    if(arr.length==maxValue*2){ //no possible numbers left 
        return;
    }
    function getRandomArbitrary(min, max) {
        return Math.floor(Math.random() * (max - min) + min);
    }
    function isValueInArrayLessThenTwoTimes(value, arr){
        var occurrences = 0;
        for(var i=0; i<arr.length; i++){
            if(arr[i]===value){
                occurrences++;
            }
        }
        return occurrences<2;
    }
    var newValue;
    do {
        newValue = getRandomArbitrary(minValue,maxValue);
    } while(!isValueInArrayLessThenTwoTimes(newValue, arr));
    arr.push(newValue);
}
 
    
    var array = [];
for (var i = 0; i < 28; i++) {
    var randomNumberBetween1and28 = Math.floor(Math.random() * (28 - 1) + 1);
    while (getCount(array, randomNumberBetween1and28) > 2) {
        randomNumberBetween1and28 = Math.floor(Math.random() * (28 - 1) + 1);
    }
    array.push(randomNumberBetween1and28);
}
function getCount(arr, value) {
    var count = 1;
    for (var i = 0; i < arr.length; i++) {
        if (value == arr[i]) count++;
    }
    return count;
}
 
    
    A shorter and faster solution:
min=1;
max=28;
nums= new Array();
for(i=1;nums.length<28;i++){
  a = Math.round(Math.random()*(max-min+1)+min);
  if(nums.indexOf(a)==-1 || nums.indexOf(a)==nums.length-nums.reverse().indexOf(a)-1){
    if(nums.indexOf(a)>-1){
      nums.reverse();
    }
    nums.push(a);
  }
}
console.log(nums);
