2015-08-15 29 views
0

我正在尋找某種函數或技術如何隨機化/基於參數的shuffle數組。 我會盡力描述我在找什麼。基於參數的shuffle/randomise數組

比方說,我們有:

$begin_array = array(1,2,3,4,5,6,7,8,9,0); 

然後我們調用函數:

magic_function($begin_array, 1); 

而且它的每一個基於函數的第二個int參數時返回相同的隨機陣列(1)。 如果我們提供2,返回的數組應該與第一個不同,但總是以相同的隨機順序。

換句話說,這個「魔術」函數應該返回基於第二個整數參數的隨機數組。

$ begin_array的長度總是不同的。

,第二個參數可以達到256

樣品什麼,我期待的:

<?php 

$begin_array = array(1,2,3,4,5,6,7,8,9,0); 

magic_function($begin_array, 1); 
// always returns the same randomized array based on second int argument 1 
// for ex: array(5,2,1,8,3,9,6,4,7,0); 

magic_function($begin_array, 2); 
// always returns the same randomized array based on second int argument 2 
// for ex: array(0,3,4,8,9,1,2,6,7,5); 

?> 

我希望你能理解我;)

預先感謝您,朋友!

回答

0

你在找什麼是一個隨機函數,它是由第二個參數播種的隨機函數。

您可以通過翻譯this Javascript array shuffle answer到PHP這樣做,seeding隨機數生成器,用第二個參數:

function deterministic_shuffle(array $array, $seed) 
{ 
    mt_srand($seed); // set the initial state 
    // shuffle implementation using mt_rand() 
    mt_srand(); // seed it again with random value to avoid affecting other code 
    return $array; 
}