Random Numbers

 

My example will randomly select 6 numbers from 12

numbersRange=12 // range
totalNumbers=6 // how many

Numbers are then randomly selected from 1 to 12 inclusive

If the randomly selected numbers are to be used to reference an arrays index an adjustment is needed to take into account that Javascript counts from zero so an array of 12 counts from 0 to 11 instead of 1 to 12.

The variable isArray is set according to how the range of numbers is to be used.

As per my example

If isArray is set to 0 the numbers range is 0 to 11 inclusive.
If isArray is set to 1 the numbers range is 1 to 12 inclusive

You can have the randomly selected numbers sorted in numerical order by setting the value of isSorted

isSorted = 0 // 0 = show in order selected, 1 = show in numerical order

<HTML> 
<HEAD> 
<TITLE>Random Numbers</TITLE>

<script type="text/javascript"> 
<!-- 

numbersRange=12 //range
totalNumbers=6 // how many 

isArray=0 // set to 1 for using with arrays, set to zero to display as text
isSorted=0 // display the randomly selected numbers in numerical order:  0 = no, 1 = yes

function generate(){

if(totalNumbers>numbersRange){
totalNumbers=numbersRange
}

firstRun=true
selectedNums=new Array() 

for(var i=0;i<totalNumbers;i++){ 
chosen=false 
rndnum=Math.floor(Math.random()*numbersRange)+(isArray==0?1:0)

if(!firstRun){ 

for(var j=0;j<selectedNums.length;j++){ 
if(rndnum==selectedNums[j]){ 
chosen=true 
i--
} 
} 

} 

if(!chosen){ 
selectedNums[i]=rndnum 
firstRun=false
} 

} 

if(isSorted==1){
selectedNums.sort(sortNums)
}

if(isArray==0){ // remove the commas when showing as text
selectedNums=selectedNums.toString()
re=new RegExp(',', 'g')
selectedNums=selectedNums.replace(re,' ') // replace commas with a space
}

document.getElementById("display").innerHTML=selectedNums

}

function sortNums(a, b) { 
return a - b 
}

onload=generate 

// --> 
</script>  

</HEAD> 
<BODY> 
<h1>Random Numbers</h1>

<div id="display" style="font-size:40px"> </div>

</BODY> 
</HTML>