0

我创建了这个 php 脚本来生成随机数,但是我的问题是,这些数字在很多情况下都会重复,并且没有得到不同的数字而没有重复

> <?php
> 
> $products=array("1","2","3","4","5","6","7","8","9","10");
> 
> for ($i=0;$i<count($products);$i++) {
> 
> $numbers_[$i]=rand(0,count($products));
> 
> if ($numbers_[$i]=="") { $numbers_[$i]="1"; } else { if
> ($numbers_[$i]>count($products)) { $numbers_[$i]=="10"; } else {
> 
> if ($numbers_[$i]==$numbers_[$i]) { $numbers_[$i]=="*"; }
> 
> 
> }
> 
> 
> }
> 
> 
> print "".$products[$numbers_[$i]]."<br>";
> 
> } ?>

我总是需要得到5个不同的数字......

这是我的一个问题

感谢和问候

4

3 回答 3

2

如果您追求不同的数字,请继续生成随机数,直到获得 5 个不同的数字。

对于您生成的每个随机数,请检查您的数组以查看您是否已经拥有它。如果是这样,请不要再次将其添加到数组中并继续生成。

PHPin_array() 函数可以很容易地检查一个值是否已经在您的数组中。

于 2012-11-08T01:42:17.853 回答
2

你用 X 个可能的值查询 X 个随机数。他们应该碰撞。

代码很难理解,但我认为条件if ($numbers_[$i]==$numbers_[$i])总是正确的。你说你需要“5”个不同的数字,但代码中没有“5”,所以我可能仍然缺少一块......

如果您尝试随机化 $products 中元素的顺序,请尝试shuffle()

要获得 N 和 M (N<=M) 之间的数字,请随机使用$data=array(); for($i=N;$i<=M;++$i) $data[]=$i; $result=shuffle($data);

于 2012-11-08T01:49:04.657 回答
2

你需要“ array_rand ”。

$products = array("1","2","3","4","5","6","7","8","9","10");
$rand_keys = array_rand($products, 5); // Get 5 Only

然后,您可以遍历返回的密钥并打印出产品编号或任何其他详细信息。

foreach ($rand_keys as $key) {
    echo $products[$key];
}
于 2012-11-08T01:53:07.330 回答