我正在尝试生成一些数字,但我不希望所有数字都是唯一的。我想如果我生成的数字从1
到100
重复一个数字{{ 1}}次。
我考虑到这个片段,将n
变量的值设置为我想重复的数字,但如果我想重复另一个数字i
等等,它会变得复杂。< / p>
50
是否有随机数生成类允许我生成重复和非重复的数字?
答案 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个唯一随机数。所以记住这一点。