大家学过排列组合的都知道,n个元素的全排列共有n!(n的阶乘)个。那么给定一个集合,怎样得到一个随机排列呢?这里要求写成 function
getRndArray(array1){}的形式,array1是个数组,比如{0,1,2,a,b,c},返回的是元素随机排列后的数组,比如{2,a,c,0,1,b}。每次调用,得到的返回值不同。
<script. language=jscript>
<!--
function
getRndArray(arr0){
arr1=new Array();
len=arr0.length;
for(var
i=0;i<len;i++){
rnd=Math.floor(Math.random()*arr0.length);
arr1[i]=arr0[rnd];
arr0.splice(rnd,1)
}
return arr1;
}
var array1=new Array();
for(var i=0;i<100;i++){
//为了方便,这里将元素设为了0-99,100个全部是数字,
//而实际这些元素可以是任意字符串或对象,
//所以不要试图从这些元素本身的特点下手
array1[i]=i;
}
var jsBegin = new
Date().getTime();
var jstest = 10000;
for(var i=0;i<jstest;i++){
result = getRndArray(array1);
}
var jsEnd = new
Date().getTime();
document.write("做完这件事需要" + (jsEnd - jsBegin) +
"毫秒<br/>");
-->
</script>
js中几个方法的讲解:
Math.random():得到一个0到1的随机数
Math.floor():返回小于或等于指定数字的最大整数
js中array对象的splice方法的详解:splice()可向数组删除并加入新的元素
arrayObject.splice(index,howmany,element1,.....,elementX)
Parameter 参数 | Description 描述 |
---|
index | Required. Specify where to add/remove elements. Must be a number 必选项。指定在哪个位置加入/删除元素,必须是数字 |
howmany | Required Specify how many elements should be removed. Must be a number, but can be "0" 必选项。指定有多少元素应该被删除。必须是数字,可以是"0" |
element1 | Optional. Specify a new element to add to the array 可选。指定要加入到数组中的新元素 |
elementX | Optional. Several elements can be added 可选。可以加入多个元素 |