Php 不应重复的rand()函数

Php 不应重复的rand()函数,php,Php,我有一个代码,从一个文件夹中显示4张图片。 我使用rand()函数为这些图片中的每一张显示不同的图片,但有时,我在同一页中收到相同的图片。 我应该怎么做才能不两次收到同一张图片?我会将所有可能的图片保存在一个数组中,然后保存,类似这样: $images = array('1.png','2.png','3.png','4.png'); shuffle($images); foreach ($images as $image) { // do something with the imag

我有一个代码,从一个文件夹中显示4张图片。 我使用
rand()
函数为这些图片中的每一张显示不同的图片,但有时,我在同一页中收到相同的图片。
我应该怎么做才能不两次收到同一张图片?

我会将所有可能的图片保存在一个数组中,然后保存,类似这样:

$images = array('1.png','2.png','3.png','4.png');
shuffle($images);
foreach ($images as $image) {
    // do something with the image
}

是否从阵列中的所有图像开始

如果是这样,我个人会使用
shuffle($pictures)


然后可能
array\u chunk($pictures,4)
得到4个组。

我已经做了一个函数来实现这一点。使用下面的代码

<?php

function GenRandom($min, $max, $quantity) {
    $numbers = range($min, $max);
    shuffle($numbers);
    return array_slice($numbers, 0, $quantity);
}

foreach(GenRandom(1,4,4) as $test){
echo $test.".png<br>"; // generates unique id everytime
} 

?>

希望这对你有帮助

  • 生成包含所有未随机化图片的数组

  • 随机选择整个数组

  • 如果需要,将随机化数组保存在db(或其他地方)中

  • 显示图片时,从数组中获取第一个值以获取随机名称

  • 从数组中删除第一个值

  • 对每个请求重复第4-5点

  • 如果数组为空,则转到第1点


  • 你能给我们看一下你到目前为止的代码吗?一般来说:洗牌数组而不是随机挑选一个条目。除此之外,“每次”是什么意思?单独页面刷新?伪随机生成器(如rand()可以在同一区域中拾取两个数字,因为随机实际上意味着空间中的每个点被拾取的概率相等。因此,如果您使用的是类似于
    $ipick=rand(0,3)
    的东西,那么每一个的概率都是1/4,因此重复的可能性相当高。谷歌“随机(图像),没有重复”。不过,随机洗牌并不比
    rand()
    更随机。他仍然可以连续两次获得图片。@Jay如果他们洗牌一次,然后循环遍历数组并依次使用每个图像,则不会如此。@JayBlanchard请提供证据证明这一说法,我知道不是这样。True@deceze-但还没有人提到:)你为什么要回显$image[0]。。?你想做的是。你已经有了所有随机排序的图像。无论如何,更新了我的答案,以确保这个(明显的?)部分也被覆盖。我已经编辑了我的答案,请现在检查