我想到的办法:
随即取得从1到100的某个格子,然后放上1。有几个就取几次,重复了就重选。
我这上网受限制,第二个问题看不到了。

解决方案 »

  1.   

    还有-189处无雷地等待探测,呵呵周围地雷数为0了,也不显示出无雷区啊?
      

  2.   

    楼上的,那个显示负数已经改过来了.
      

  3.   

    对于第一个问题
    window里雷数是配置的,不是随机的(“高级”的雷数是100,格数是30*16)
    如果已确定格数和雷数,
    随机的问题就是一个"抽牌算法",
    即:从30*16个格子里,选出100个格子,这些格子里有地雷.
    至于抽牌算法和洗牌算法,如下,仅供参考:
    -----------------------------------<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>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>