php 可以随机输出6个不重复的整数,生成固定范围不重复随机整数(JS&PHP)

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;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值