【发布时间】:2011-09-27 07:40:13
【问题描述】:
我正在寻找一个函数,我可以在 PHP 中传递一个数组和一个种子并取回一个“随机”数组。如果我再次传递相同的数组和相同的种子,我将得到相同的输出。
我试过这段代码
//样本数组 $test = 数组(1,2,3,4,5,6); //显示数组 print_r($test); //种子随机数生成器 mt_srand('123'); //根据它生成一个随机数 回声 mt_rand(); 回声“\n”; //打乱数组 洗牌($测试); //显示结果 print_r($test);但它似乎不起作用。对最好的方法有什么想法吗?
这个问题绕着这个问题跳舞,但它已经过时了,没有人提供关于如何做到这一点的实际答案:Can i randomize an array by providing a seed and get the same order? - “是” - 但是如何?
更新
到目前为止,答案适用于 PHP 5.1 和 5.3,但不适用于 5.2。恰好我要运行它的机器使用的是 5.2。
谁能在不使用 mt_rand 的情况下举个例子?它在 php 5.2 中被“破坏”了,因为它不会基于相同的种子给出相同的随机数序列。请参阅php mt_rand page 和bug tracker 了解此问题。
【问题讨论】:
-
你注意到这里的更新日志了吗:php.net/manual/en/function.shuffle.php?它说,从 php 4.2.0 开始,您不需要手动为随机数生成器播种。
-
让我确定我明白你想要什么。您想要一个“随机”数组,但又希望它能够被复制?
-
他需要同样的订单,所以他必须这样做。
-
您可能需要创建自己的随机数生成器和 Array Shuffle。查看此链接了解实现细节:shamimhafiz.wordpress.com
-
下面有一些很好的答案。我不知道如何选择最好的。