【问题标题】:php rand no repit the same number [duplicate]php随机不重复相同的数字[重复]
【发布时间】:2013-07-29 00:06:17
【问题描述】:

我的 rand 函数有问题,我每次重新加载网站时都会看到在很多情况下重复相同的数字,我将我的示例脚本继续:

for($i=0;$i<3;$i++)
{
$a=rand(0,2);
echo $a;
}

这个脚本的结果在很多情况下可能是 this and right , (1,4,5) 或者在其他情况下有这个问题 (1,2,2) 或 (2,3,2) ( repit random number )

在许多情况下,重复一个数字,这个结果重复一个图片或一个视频,并且不显示所有不同的结果

感谢您的问候

【问题讨论】:

标签: php random


【解决方案1】:

在你的情况下,准备一个包含从 0 到 6 的数字的数组并随机播放:

$a = range(0, 6);
shuffle($a);
foreach ($a as $x) { echo $x; }

另一种选择是存储已生成值的列表并使用拒绝抽样,也就是说,重试,直到找到不在列表中的值。使用哪种方法(洗牌并返回它或它的子列表或拒绝抽样)主要取决于允许的数字范围和要返回的项目数。但是,如果您必须从 (0, 6) 生成 7 个唯一数字,就像您的情况一样,那么改组几乎总是正确的选择。另一方面,如果您必须从 (0, 1020) 中得出三个唯一数字,则权衡看起来非常不同。

【讨论】:

    【解决方案2】:

    另一种方法是将最后一个随机值存储在会话中,如果数量相等则重新开始循环:

    for($i=0;$i<3;$i++)
    {
        $a=rand(0,2);
        if(isset($_SESSION['lastRand']) && $a == $_SESSION['lastRand']) {
            $i = 0;
            continue;
        }
        $_SESSION['lastRand'] = $a;
        echo $a;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-05
      • 1970-01-01
      • 2015-03-31
      • 2013-01-18
      • 2012-01-16
      • 2020-02-20
      相关资源
      最近更新 更多