庞永胜

js获取一组不重复的随机数的方法

一、基本思路:

建立一个数组存放所有可能取到的值,每次从该数组中随机取走一个,放到新的数组中,直到完成。

二、实现方法

1、方法一:

(1)创建一个数组arr,数组元素为所有可能出现的随机数的集合;

(2)通过num=Math.floor(Math.random()*num_total*first_value)方法获取一个随机数。

 随机数的范围为0-arr.length;(用来随机抽取arr任意位置的数组项)

(3)通过arr[num]获取数组该位置的元素,并push到目标数组;

(4)通过arr.splice(num,1)删除该元素;

(5)循环到(1)获取下一个随机数

完整写法为:

function roa(arr)    //arr为可能出现的元素集合
{
    var temp=new array();    //temp存放生成的随机数组
   var count=arr.length;    
    for (i=0;i<count;i++)
    { 
        var num=Math.floor(Math.random()*arr.length); //生成随机数num
        temp.push(arr[num]);    //获取arr[num]并放入temp
        arr.splice(num,1);    
    }
    return temp;
}

 

posted @ 2016-06-23 22:30  庞永胜  阅读(20979)  评论(3编辑  收藏  举报