【发布时间】:2012-12-25 19:14:10
【问题描述】:
我想要实现的是制作每次从 MySQL DB 生成不同内容的网页。但是当我使用 rand() 函数时,一些选项可以重复。所以我想做的是使用动态数组“异常”制作rand()函数,每次生成网页内容时都会更新,所以每个选项只向用户显示一次..
假设我有 5 种不同的选择 1,2,3,4,5
当rand()函数下一次选择3时,就没有机会得到3了..
function randWithout($from, $to, array $exceptions) {
sort($exceptions);
$number = rand($from, $to - count($exceptions));
foreach ($exceptions as $exception) {
if ($number >= $exception) {
$number++;
} else {
break;
}
}
return $number;
}
$exceptions = array("3","4");
$random = randWithout(1, $num_rows, $exceptions);
这是我想要的,但我希望数组“$exceptions”每次都更新......
有没有办法通过使用会话或其他选项来做到这一点?我不想使用另一个 MySQL 表。我希望它快速简单
谢谢
【问题讨论】:
-
将数组存储在
$_SESSION中可以正常工作。 -
尝试使用 mt_rand(),随机性更好
-
您可以使用像LFSR 这样的伪随机数生成器...这样您就不必记住所有异常...只需记住种子和最后生成的值...