php生成三个数字并且任意两个不重复

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php生成三个数字并且任意两个不重复相关的知识,希望对你有一定的参考价值。

1 2 3 4 5 6 7 8 这八个数字,3个为一个组合

如:123 145 167 246 257 347 568

注意这里的每一组数字里面任何两个数字都不一样。

怎么用php实现,感觉太难了·····弄了几个小时没写出来,求好心人帮忙!
这里的不一样是这个意思,如:123 145 167这三组数中12 13 23,14 15 45,16 17 67任意两个数字,都不是重复的。

最后的结果就是:123 145 167 246 257 347 568这几组数字,里面任何一组的两个数字的组合都和其他组里的数字不重复。

参考技术A <?php
$check = $list = array();

$end = 41;

for ($i = 1; $i < $end; $i++)

for ($j = $i + 1; $j < $end; $j++)


if ( ! empty($check[$i][$j]) OR ! empty($check[$j][$i])) continue;

for ($k = $j + 1; $k < $end; $k++)


if ( ! empty($check[$i][$k]) OR ! empty($check[$k][$i]) OR ! empty($check[$j][$k]) OR ! empty($check[$k][$j])) continue;

$check[$i][$j] = $check[$i][$k] = $check[$j][$i] = $check[$j][$k] = $check[$k][$i] = $check[$k][$j] = 1;
$list[] = $i.'_'.$j.'_'.$k;
break;




print_r($list);本回答被提问者采纳
参考技术B <?php
$arr = array(1,2,3,4,5,6,7,8);
$str = "";
for($i=0;$i<3;$i++)
$index = rand(0,count($arr)-1);
while(!isset($arr[$index]))
$index = rand(0,count($arr)-1);

$str.=$arr[$index];
unset($arr[$index]);

echo $str;
?>

//如果不是这个意思再补充提问,我继续帮你弄

追问

不对,需要先生成全部的组合,然后再排除任意两个数的组合在其他数中有的。请看补充说明。

追答

三个一组 请问一次要生成几组 还是把所有的可能都显示出来

追问

需要满足所有的条件,生成全部的然后把每组里面的数字任意两个组合后,排除和其他的组里有重复的。

追答

按照你这样的需求就没有固定的结果了。
我有时间帮你写一下。

追问

谢谢啊!

追答

请问 123 和321 是否算一个 还是这两个数可以同时在结果里。

追问

算一个了。谢谢啊!下面的朋友的解决了!

参考技术C 没理解到你这个所谓的不一样是什么意思!

生成多个不重复的随机数字php

这个没什么好废话的;直奔主题来说思路;

首先是要用mt_rand()函数生成指定个数的随机数字;

然后使用array_unique()函数去重;

因为去重了;所以得到的数字就不够指定个数了;

所以;核心是要用while循环;直到得到指定个数的数字;

到这里基本可以是结束了;

对于追求完美的人来说;还可以再用个sort();

目的不是要用来排序;主要是将得到的数组key格式化;

用代码来说话;就如下;

/**
 * 生成不重复的随机数
 * @param  int $start  需要生成的数字开始范围
 * @param  int $end    结束范围
 * @param  int $length 需要生成的随机数个数
 * @return array       生成的随机数
 */
function get_rand_number($start=1,$end=10,$length=4){
    $connt=0;
    $temp=array();
    while($connt<$length){
        $temp[]=mt_rand($start,$end);
        $data=array_unique($temp);
        $connt=count($data);
    }
    sort($data);
    return $data;
}

当然;重点不是这个函数;重点是这个函数的思路;可以解决很多类似的问题;

技术分享


以上是关于php生成三个数字并且任意两个不重复的主要内容,如果未能解决你的问题,请参考以下文章

php生成随机数字,范围1-100,每次生成一个数字,可以重复

生成多个不重复的随机数字php

生成多个不重复的随机数字php

按键精灵怎么随机生成1到12数字并且不重复

怎么用JavaScript生成一个数组,数组里有十个随机数。并且不重复。数字

C#如何生成随机不重复的数字