基于参数

时间:2015-08-15 14:35:14

标签: php arrays

我正在寻找一些基于参数随机化/混洗数组的函数或技术。 我将尝试描述我在寻找的东西。

假设我们有:

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

然后我们调用函数:

magic_function( $begin_array, 1 );

每次根据函数(1)的第二个int参数返回相同的随机数组。 如果我们提供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 );

?>

我希望你理解我;)

提前谢谢你,朋友们!

1 个答案:

答案 0 :(得分: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;
}