我试图在我的页面上显示随机横幅来执行此操作我有一个函数,它给我一个随机数字,并根据数字我显示横幅问题是,有时我得到相同的数字,所以当页面刷新显示相同的横幅。我想在每页刷新时显示不同的横幅。
我使用以下代码获取随机数:
function &UniqueRands($min, $max, $keys){
static $returnme = array();
while(in_array($x = rand($min,$max),$returnme));
$returnme[] = $x;
if($keys < count($returnme)-1 && $keys < ($max-$min))
UniqueRands($min, $max, $keys);
return $returnme;
}
$rands = &UniqueRands(1, 3, 1);
foreach ($rands as $num) {
echo "$num\n";
}
在我得到随机数之后我就做了
if ($num=1){
//display banner 1
}
...
我做错了什么,我很乐意听到其他任何想法。感谢。
答案 0 :(得分:2)
问题是,有时我得到相同的数字,所以当页面 刷新相同的横幅显示
根据您拥有的横幅数量,这是完全可能的。假设您有4个横幅,连续获得两个横幅的几率是1/4。
如果你真的不希望连续两次显示相同的横幅,你实际上需要减少随机而不是更多。存储cookie或其他内容中显示的最后一个横幅,然后在选择要显示的下一个横幅时确保不显示该横幅。
当然,正如CanSpice所说,如果你有4个横幅并且用户看了5页,那么你将不得不多次展示一个横幅。但是使用这种方法,你可以阻止他们至少连续两次看到同一个横幅。
答案 1 :(得分:0)
您使用的是哪个版本的PHP?由于4.2 rand()
函数是自动播种的,但如果您使用较旧的函数,则必须在调用srand()
函数之前使用rand()
函数来初始化随机数生成器。或者mt_rand()
可能有所帮助。
答案 2 :(得分:0)