php随机不相同整数,生成固定范围不重复随机整数(JSPHP)
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
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;
}
}
總結
以上是生活随笔為你收集整理的php随机不相同整数,生成固定范围不重复随机整数(JSPHP)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 开关电源反馈环路设计matlab,开关电
- 下一篇: matlab 着色算法,coloriza