用种子随机化PHP数组?
我正在寻找一个函数,我可以在PHP中传递数组和种子,并得到一个“随机”数组。如果我再次传递相同的数组和相同的种子,我将得到相同的输出。
我试过这个代码
//sample array $test = array(1,2,3,4,5,6); //show the array print_r($test); //seed the random number generator mt_srand('123'); //generate a random number based on that echo mt_rand(); echo "\n"; //shuffle the array shuffle($test); //show the results print_r($test);
但它似乎没有奏效。对最好的方法有什么想法吗?
这个问题围绕着这个问题跳舞,但它很古老,没有人提供关于如何做到这一点的实际答案:我可以通过提供种子来随机化数组并获得相同的顺序吗? - “是” - 但如何?
更新
到目前为止,答案适用于 PHP 5.1 和 5.3,但不适用于 5.2。碰巧的是,我想运行这个的机器正在使用5.2。
任何人都可以在不使用mt_rand的情况下举个例子吗?它在 php 5.2 中被“破坏”,因为它不会基于相同的种子给出相同的随机数序列。请参阅 php mt_rand页面和 bug 跟踪器来了解此问题。