我有0-19这20个整数,我现在想要 js随机取一个0-19之间的整数,该如何?而且我取的这个整数不能和下一次取的整数相同,隔一次相同没关系,不要连着有相同的

解决方案 »

  1.   

    如果要创建一个从x到y的随机数,可以这样写Math.round(Math.random()*(y-x))+x;var LastNum=0;//记录上一次产生的随机值
    function getRandom(x,y)
    {
    var r=Math.round(Math.random()*(y-x))+x;if(r==LastNum) getRandom(x,y);//再次调用自身
    LastNum=r;//记录值
    return r;}
    alert("产生的随机数为"+getRandom(0,19));
      

  2.   

    <script> //获取一个min_num到max_num之间的整数
    function get_math_num(min_num , max_num){
    return (((Math.random() * (max_num - min_num + 1) ) + "").split(".")[0]) * 1 + min_num;
    }

    //获取一个不等于num的0-19之间的整数,如果不传num,就代表0-19之间的任意整数
    function getmathnumber(num){
    while(true){
       var nm = get_math_num(0,19);
       if(!num || num != nm){
        return nm;
       }
    }
    }

    //第一次,任意取
    var nnn = getmathnumber();
    alert(nnn);

    //后面每次取的时候,都将前一次取出来的带进去。
    for(var i = 0 ; i < 30 ; i ++){
    var temp = getmathnumber(nnn);
    alert(temp);
    nnn = temp;
    }
    </script>
    经过测试,好使!