生成多个数字时多次重复数字

时间:2015-01-20 16:33:39

标签: php random

我正在尝试生成一些数字,但我不希望所有数字都是唯一的。我想如果我生成的数字从1100重复一个数字{{ 1}}次。

我考虑到这个片段,将n变量的值设置为我想重复的数字,但如果我想重复另一个数字i等等,它会变得复杂。< / p>

50

是否有随机数生成类允许我生成重复和非重复的数字?

2 个答案:

答案 0 :(得分:1)

这可确保$special_value至少 $num_special_occurance次发生。如果随机抽取,可能会更频繁地发生。

$num_numbers = 10;
$special_value = rand(1, 100);
$num_special_occurance = 5;
$numbers = array();
for ($i = 0; $i < $num_numbers - $num_special_occurance; $i += 1) {
    $numbers[] = rand(1, 100);
}
for ($i = 0; $i < $num_special_occurance ; $i += 1) {
    array_splice($numbers, rand(0, count($numbers) - 1), 0, array($special_value));
}

var_dump($numbers);

生成5(10-5)个随机数,然后在随机位置添加特殊值5次。

答案 1 :(得分:0)

使用数组 这样,您可以生成随机数,并在将它们添加到结果之前检查它们是否已生成。

$numbers = [];
for($i = 0; $i < 10; $i++)
{
   do { $rand_val =  rand(1,100); } while ( in_array($rand_val, $numbers) );
   $numbers []= $rand_val;    
}
print_r($numbers);

这将为您提供范围1-100中的10个唯一随机数。

注意:如果您要查找的号码数量超出范围,它将会挂起。比如,如果您尝试在1-100范围内找到200个唯一随机数。所以记住这一点。