<SCRIPT LANGUAGE="JavaScript">
<!-- Begin
function numbers() {
var nummenu = document.lotto.numbercount;
var numbercount = nummenu.options[nummenu.selectedIndex].value*1;
var maxnumbers = document.lotto.maxnum.value*1;
if (numbercount > maxnumbers) {
alert("Be sure to select a max lottery number value!");
}
else {
var ok = 1;
r = new Array (numbercount);
for (var i = 1; i <= numbercount; i++) {
r[i] = Math.round(Math.random() * (maxnumbers-1))+1;
}
for (var i = numbercount; i >= 1; i--) {
for (var j = numbercount; j >= 1; j--) {
if ((i != j) && (r[i] == r[j])) ok = 0; 
   }   
}
if (ok) {
var output = "";
for (var k = 1; k <= numbercount; k++) {
output += "Number " + k + " = " + r[k] + "\n";
}
document.lotto.results.value = output;
}     
else numbers();
   }
}
//  End -->
</script>
<form name="lotto">
<table width=100% border=0>
<tr>
<td align=center>产生数字个数
<select name="numbercount">
<option value="1">1
<option value="2">2
<option value="3">3
<option value="4">4
<option value="5">5
<option value="6" selected>6
<option value="7">7
<option value="8">8
<option value="9">9
<option value="10">10
</select>  
<br>产生数字范围<input type=text name=maxnum value="49" size=2 maxlength=2><br>
<input type=button value="产生随机数" onClick="numbers()">
<p>
<textarea name="results" rows=11 cols=15></textarea>
</td>
</tr>
</table>
</form>现在只能每次随机抽
后面抽的数 不能排除前面出现过的数
例如 开始抽了50个三等奖
下面的到抽2等奖的时候,就没有这50个人的机会了
依次类推!
^_^

解决方案 »

  1.   

    <html><head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>JK:支持民族工业,尽量少买X货</title>
    </head><body>
    <pre>
    洗牌算法/抽牌算法:
    部分代码来自:
    http://community.csdn.net/Expert/topic/3858/3858964.xml?temp=.5909693
    fason的回贴。</pre><script language="JavaScript">
    <!--function getRandomArray(m,n)   //得到m张牌里的n张牌 (m>=n>0)(抽牌)
    {
    if(n==null || n==m )
    return getRandomPlayCard(m);
    var array1=new Array(m);
    for(var i=0;i<m;i++)
    array1[i]=i;
    var m2=m-0.00001;
    for(var i=0;i<n;i++)
    {
    var rnd=Math.floor(Math.random()*m2);
    var swap=array1[i];array1[i]=array1[rnd];array1[rnd]=swap;
    }
    return(array1.slice(0,n));
    }
    function getRandomPlayCard(m) //洗牌
    {
    var array1=new Array(m);
    for(var i=0;i<m;i++){
    var rnd=Math.floor(Math.random()*(i+0.99999))
    array1[i]=array1[rnd];
    array1[rnd]=i;
    }
    return array1;
    }
    document.write(getRandomPlayCard(100)+"<br><br>"+getRandomArray(100,5));--> 
    </script></body>
    </html>
      

  2.   

    <option value="10">10
    这样是可以的?是不是用个Array来记录抽过的数啊~然后比对~如果有,则继续抽!