我正在尝试为以下情况编写算法:
数组的一个例子:
$variations = array(
array('1.1', '1.2', '1.3'),
array('2.1', '2.2', '2.3'),
array('3.1', '3.2', '3.3'),
array('4.1', '4.2', '4.3', '4.4'),
array('5.1', '5.2', '5.3'),
array('6.1', '6.2', '6.3'),
array('7.1', '7.2', '7.3'),
...
array('M.1', 'M.2', 'M.3', 'M.4', 'M.5')
);
对于每个变量,我需要从每个级别的数组中获取唯一的值组合,例如:
更新:如果我再次提供相同的参数值,结果应该相同。
有人有任何建议吗?
答案 0 :(得分:2)
听起来你想从每个子阵列中选择一个随机项目:
srand($param);
foreach($variations as $values) {
$result[] = $values[array_rand($values)];
}
// if you want a string list instead of an array
$result = implode(',', $result);
// reset the random seed
srand();
答案 1 :(得分:0)
如果你想从$variations
数组中的一个数组中随机选择,你可以遍历它们并根据值的数量选择一些数据。
<?php
$variations = array(
array('1.1', '1.2', '1.3'),
array('2.1', '2.2', '2.3'),
array('3.1', '3.2', '3.3'),
array('4.1', '4.2', '4.3', '4.4'),
array('5.1', '5.2', '5.3'),
array('6.1', '6.2', '6.3'),
array('7.1', '7.2', '7.3'),
array('M.1', 'M.2', 'M.3', 'M.4', 'M.5')
);
$unique = array();
foreach ($variations as $arr) {
$unique[] = $arr[rand(0, (count($arr) - 1))];
}
print_r($unique);
答案 2 :(得分:0)
您要求的是pseudo random number generator
,因为号码取决于初始种子。
srand(1001); // seeding the random number
print_r(rand()); // run it 10x, always the same result.
如果您提供的数字为X,则srand(D+X+1); .... srand(D+X+M);
种子D=initial number
。并使用每个srand()
和rand()
输出,使用它来对该特定数组进行洗牌并选择一个数字。
如何&#34;进行随机播放&#34;?一个例子可能会将所有数字相加(4 + 6 + 9 + 3 + 5 + 3 + 9 + 3 + 2 = 44)并开始计算第44项,(即:44 mod [数组中项目的数量])