查看以下功能:
function CustomShuffle($arr, $para){
............................
............................
return $array;
}
假设这是一个数组:
$array = array("red","green","blue","yellow","purple");
查看类似下面的输出(可能是不同的有序但对于相同的整数参数必须相同)
$result = CustomShuffle($array, 10);
// output: array("blue","purple","yellow","red","green") same
$result = CustomShuffle($array, 12);
// output: array("purple","yellow","red","green","blue")
$result = CustomShuffle($array, 10);
// output: array("blue","purple","yellow","red","green") same
$result = CustomShuffle($array, 7);
// output: array("blue","yellow","purple","red","green")
简单地说,数组将相对于整数参数进行混洗,但对于相同的参数,输出将是相同的。有可能吗?
答案 0 :(得分:0)
是的,这是可能的,它是如何发生的,取决于期望的实现以及您希望允许的排列数量。实现这一目标的一种非常天真的方法是在$para
内运行CustomShuffle
次循环,使array_shift()
元素array_push()
相同的元素https://github.com/elmah/Elmah/issues/407。这种方法只会给你count($array)
个可能的结果,这意味着全等模count($array)
的数字会产生相同的结果。
最佳算法允许您利用最大组合,即gmp_fact(count($array))
,或者只是输入数组长度的阶乘。没有办法实现比这个值更多的独特组合,所以无论你设计什么算法,你都会对$para
的值有一个约束,直到你最终遇到已经看到过的组合。