一、基本思路:
建立一个数组存放所有可能取到的值,每次从该数组中随机取走一个,放到新的数组中,直到完成。
二、实现方法
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; }