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>