JavaScript版本
function randomArr(/*最大随机数*/max, /*随机数个数*/amount,/*最小随机数*/min) {
if (!min)
min = 0;
if (!amount)
amount = max - min;
var range=max-min;
if (min > max || amount > range) {
throw new Error("参数不正确。");
} else {
var arr = [],
result=[];
for (var i = 0; i < range; i++) {
arr[i] = i + min;//生成固定范围的顺序数
}
for (var j = 0; j < (2 * max) ; j++) {
var offset1 = Math.floor(Math.random() * 100);//生成固定范围的随机数组下标1
var offset2 = Math.floor(Math.random() * 100);//生成固定范围的随机数组下标2
offset1 = (offset1 > range - 1) ? offset1 - range - 1 : offset1;
offset2 = (offset2 > range - 2) ? offset2 - range - 2 : offset2;
//将上述两个随机生成的下标为索引交换两个元素,将整个数组乱序
var temp = arr[offset1];
arr[offset1] = arr[offset2];
arr[offset2] = temp;
}
//从后面删除多余数组
console.log(amount);
console.log(range);
if (amount != range) {
for (var m = 0; m <amount; m++) {
result[m]=arr[m]
}
}
return result;
}
}
PHP版本
/**
* @param 最大随机数 $max
* @param 随机数个数 $amount
* @param 最小随机数 $min
*/
function randomArr( $max , $amount = "" , $min = 0 ) {
$range = $max - $min;
if ($amount == null)
$amount = $range; // 设定$range默认值
if ($min >= $max || $amount > $range) {
echo "The arguments out of range!";
} else {
$arr = array ();
for ($i = 0; $i < $range; $i++) {
$arr[$i] = $i + $min; // 生成固定范围的顺序数
}
for ($j = 0; $j < (2 * $max); $j++) {
$offset1 = mt_rand(0 , $range - 1); // 生成固定范围的随机数组下标1
$offset2 = mt_rand(0 , $range - 1); // 生成固定范围的随机数组下标2
// 将上述两个随机生成的下标为索引交换两个元素,将整个数组乱序
$temp = $arr[$offset1];
$arr[$offset1] = $arr[$offset2];
$arr[$offset2] = $temp;
}
if ($range != $amount) {
// 从后面开始删除多余的数组
for ($m = 0; $m < $range - $amount; $m++) {
$sumKey = count($arr) - 1;
unset($arr[$sumKey]);
}
}
return $arr;
}
}