<script type="text/javascript"> <!-- function getRandom(max, min){ var max = parseFloat(max); var min = parseFloat(min); return Math.floor(Math.random()*(max - min)+min); } function t31in7(){ var min = 1, max = 31, count = 7, weishu = 2; var result = [], curr = 0; for(var i = 0; i < count; i++){ curr = getRandom(min, max+1).toString(); while(result.join(',').indexOf(curr) != -1){ curr = getRandom(min, max+1).toString(); } result.push(('0' + curr).slice(-2)); } document.getElementById('re').innerHTML = result.join(' '); }//--> </script> <input type="button" value="31in7" onclick="t31in7();" /> <div id="re" style="color:red"></div>
// 参数说明 var min = 1, max = 32, count = 6, weishu = 2; //这样就是32选6min: 最小数 max 最大数 count 所选球数 weishu就是要显示球号的固定位数
晕 楼主的是 33选6 var min = 1, max = 33, count = 6, weishu = 2; // 把第一行参数换成这样
var arr={}; var getNumber=function() { var n=parseInt(Math.random()*33)+1;//1-33; if(!arr[n]) { arr[n]=n; return n; } else//如果已经存在重新生成 return arguments.callee(); } for(var i=0;i<6;i++) { document.write(getNumber()+"<br/>");//输出6个号码 }
//产生一个1-33的数组 function createArr(){ var arr = []; var n; var has=false; for (var i = 0; i < 6; i++) { has=true; while (has) { has=false; n = Math.floor(Math.random() * 33) + 1;//1-33 for (var j = 0; j < arr.length; j++) { if (arr[j] == n) { has = true; break; } } } arr.push(n); } return arr; }
result.push(('0' + curr).slice(-2)); 这句话是什么意思??
<script language="javascript"> function AscSort(x, y) { return x == y ? 0 : (x > y ? 1 : - 1 ); } function getNum(){ document.getElementById("divId").innerText="红球:"; document.getElementById("divId2").innerText="蓝球:"; var n=getRed(); n.sort(AscSort); for(var i=0;i<6;i++){ document.getElementById("divId").innerText+=n[i]+" "; } y=true; while(y==true){ var n=Math.floor(Math.random()*16); if(n>0){ y=false; if(n<10) n='0'+n; document.getElementById("divId2").innerText+=n+" "; } } } function getRed(){ var n=new Array(); var i=0; do{ var yn=false; var m=Math.floor(Math.random()*34); if(m>0){ for(j=0;j<i;j++){ if(n[j]==m) yn=true; } }else{ yn=true; } if(yn==false){ if(m<10) m='0'+m; n[i]=m; i++; } }while(i<6); return n; } </script> <body> <input value="嘿嘿" type="button" onClick="javascript:getNum();" /> <div id="divId" style="color:#F00; font-size:14px">红球:</div> <div id="divId2" style="color:#00F; font-size:14px">蓝球:</div> </body> </html>
<script type="text/javascript">
<!--
function getRandom(max, min){
var max = parseFloat(max);
var min = parseFloat(min);
return Math.floor(Math.random()*(max - min)+min);
} function t31in7(){
var min = 1, max = 31, count = 7, weishu = 2;
var result = [], curr = 0;
for(var i = 0; i < count; i++){
curr = getRandom(min, max+1).toString();
while(result.join(',').indexOf(curr) != -1){
curr = getRandom(min, max+1).toString();
}
result.push(('0' + curr).slice(-2));
}
document.getElementById('re').innerHTML = result.join(' ');
}//-->
</script>
<input type="button" value="31in7" onclick="t31in7();" />
<div id="re" style="color:red"></div>
// 参数说明
var min = 1, max = 32, count = 6, weishu = 2; //这样就是32选6min: 最小数 max 最大数 count 所选球数 weishu就是要显示球号的固定位数
晕 楼主的是 33选6
var min = 1, max = 33, count = 6, weishu = 2; // 把第一行参数换成这样
var arr={};
var getNumber=function() {
var n=parseInt(Math.random()*33)+1;//1-33;
if(!arr[n]) {
arr[n]=n;
return n;
}
else//如果已经存在重新生成
return arguments.callee();
}
for(var i=0;i<6;i++) {
document.write(getNumber()+"<br/>");//输出6个号码
}
//产生一个1-33的数组
function createArr(){
var arr = [];
var n;
var has=false;
for (var i = 0; i < 6; i++) {
has=true;
while (has) {
has=false;
n = Math.floor(Math.random() * 33) + 1;//1-33
for (var j = 0; j < arr.length; j++) {
if (arr[j] == n) {
has = true;
break;
}
}
}
arr.push(n);
}
return arr;
}
function AscSort(x, y)
{
return x == y ? 0 : (x > y ? 1 : - 1 );
}
function getNum(){
document.getElementById("divId").innerText="红球:";
document.getElementById("divId2").innerText="蓝球:";
var n=getRed();
n.sort(AscSort);
for(var i=0;i<6;i++){
document.getElementById("divId").innerText+=n[i]+" ";
}
y=true;
while(y==true){
var n=Math.floor(Math.random()*16);
if(n>0){
y=false;
if(n<10)
n='0'+n;
document.getElementById("divId2").innerText+=n+" ";
}
}
}
function getRed(){
var n=new Array();
var i=0;
do{
var yn=false;
var m=Math.floor(Math.random()*34);
if(m>0){
for(j=0;j<i;j++){
if(n[j]==m)
yn=true;
}
}else{
yn=true;
}
if(yn==false){
if(m<10)
m='0'+m;
n[i]=m;
i++;
}
}while(i<6);
return n;
}
</script>
<body>
<input value="嘿嘿" type="button" onClick="javascript:getNum();" />
<div id="divId" style="color:#F00; font-size:14px">红球:</div>
<div id="divId2" style="color:#00F; font-size:14px">蓝球:</div>
</body>
</html>
3楼代码写的很漂亮 但从抽奖的角度来讲算是有BUG。
你判断重复的方式有点问题。。
while(result.join(',').indexOf(curr) != -1){
curr = getRandom(min, max+1).toString();
} //是判断新生成的数字 之前有没有重复。
也就是说如果前面出现了12,13这两个随机数,后面连02,03都排除了,因为数字2,3在前面也找得到。。