用PHP,rand不重复的5个数

发布网友 发布时间:2022-04-28 02:00

我来回答

6个回答

热心网友 时间:2022-04-28 03:30

楼上的太麻烦了
<?php
function NoRand($begin=0,$end=20,$limit=5){
$rand_array=range($begin,$end);
shuffle($rand_array);//调用现成的数组随机排列函数
return array_slice($rand_array,0,$limit);//截取前$limit个
}
print_r(NoRand());
?>
或者不shuffle的话
<?php
$tmp=array();
while(count($tmp)<5){
$tmp[]=mt_rand(1,20);
$tmp=array_unique($tmp);
}
print join(',',$tmp);
?>

热心网友 时间:2022-04-28 04:48

强烈要求加分!!!写得辛苦啊
<?php
for($i=0;$i<5;){
if(0 == $i){
$arrRand[$i] = rand(1,20);
}
else{
$j = $i;
while(1){
if($j==$i) $temp = rand(1,20);
if($arrRand[$j - 1]==$temp){
$j=$i;
continue;
}
else{
if($j==0) break;
$j--;
}
}
$arrRand[$i]=$temp;

}
echo $arrRand[$i].'--';
$i++;
}
?>

补充:楼主,我在iis和apache都试了,没有错的,你的php版本是多少,这句 if($j==0) break; 在检测到到达随机数组的下标为第一个时跳出循环,逻辑上不可能为-1的。

热心网友 时间:2022-04-28 06:22

<?php
for($i=0;$i<5;){
if(0
==
$i){
$arrRand[$i]
=
rand(1,20);
}
else{
$j
=
$i;
while(1){
if($j==$i)
$temp
=
rand(1,20);
if($arrRand[$j
-
1]==$temp){
$j=$i;
continue;
}
else{
if($j==0)
break;
$j--;
}
}
$arrRand[$i]=$temp;
}
echo
$arrRand[$i].'--';
$i++;
}
?>
补充:iis和apache都试了,这句
if($j==0)
break;
在检测到到达随机数组的下标为第一个时跳出循环,逻辑上不可能为-1的。

热心网友 时间:2022-04-28 08:14

<?php
$a[]=get();
$a[]=get();
$a[]=get();
$a[]=get();
$a[]=get();

for($i=0;$i<=count($a)-1;$i++){
echo "<br>".$a[$i]."<br>";
}

function get(){

while (true){
$temp=rand("1","20");
if(check($temp)){
return $temp;
break;
}
}
}

function check($num){
global $a;
$flag=0;

for($i=0;$i<=count($a)-1;$i++){
if ($num==$a[$i]){
$flag=1;
}
}
if($flag==1){
return false;
}
else
{
return true;
}
}
?>

楼下的强,学习了~

热心网友 时间:2022-04-28 10:22

楼上的在for()中少写一个条件:for($i=0;$i<5;$i++)

热心网友 时间:2022-04-28 12:46

<?php
for($i=0;$i<5;){
if(0 == $i){
$arrRand[$i] = rand(1,20);
}
else{
$j = $i;
while(1){
if($j==$i) $temp = rand(1,20);
if($arrRand[$j - 1]==$temp){
$j=$i;
continue;
}
else{
if($j==0) break;
$j--;
}
}
$arrRand[$i]=$temp;

}
echo $arrRand[$i].'--';
$i++;
}
?>

补充:iis和apache都试了,这句 if($j==0) break; 在检测到到达随机数组的下标为第一个时跳出循环,逻辑上不可能为-1的。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com