【发布时间】:2012-02-02 19:46:20
【问题描述】:
我正在尝试在我的页面上显示随机横幅来执行此操作我有一个功能,它给我一个随机数,根据我显示横幅的数字问题是有时我得到相同的数字所以当页面刷新时显示相同的横幅。我想在每次页面刷新时显示不同的横幅。
我使用以下代码获取随机数:
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
}
...
我做错了什么,我很乐意听到任何其他想法。谢谢。
【问题讨论】:
-
我想你的意思是
if($num === 1) -
假设您有
N横幅。N+1th 刷新会发生什么? -
这听起来像是一个统计错误——抛硬币三次,尽管有 50/50 的概率,你仍然有 13% 的机会最终会连续出现三个正面或反面( .5 * .5 * .5 = .125)。尝试增加
$min和$max的范围。 -
如果您刷新页面,这是一个新请求,因此会生成一个新的随机数,但之前生成的数字不会在请求之间持久化......为什么您使用 & 引用该函数?