【问题标题】:Random images with no repeat php没有重复php的随机图像
【发布时间】:2014-09-21 17:28:56
【问题描述】:

我的图片存储在名为 images 的服务器文件中,大约有 300 多张。在数据库中,我将这些图片分配给了 ID。

在数据库中是这样的

ID: 300
photoPath: "images/300.png"

现在我需要在网站上随机显示它们,刷新后不重复。我在 php 中随机生成它们

mysqli_query($con, "SELECT * FROM images ORDER BY rand() LIMIT 1");
$row = mysqli_fetch_assoc($res); // I get that one image's ID and path

现在我需要确保刷新后没有图像重复。我想我应该将图像的 ID 写入 cookie,然后检查之前是否显示过具有此 ID 的图片。但是我该怎么做呢?我应该在一个 cookie 中创建 ID 数组吗?

【问题讨论】:

    标签: database image cookies random unique


    【解决方案1】:

    非重复随机数问题一般有三种解决方案:

    • 如果您想要大范围内的几个数字,请选择一个,如果重复则拒绝它。如果范围很大,那么这不会导致太多的重复尝试。

    • 如果您想要小范围内的大量数字,则将所有数字设置在一个数组中并打乱数组。 Fisher-Yates 算法是阵列混洗的标准。从打乱后的数组中依次取出随机数。

    • 如果您需要大范围的大量数字,请使用适当大小的加密算法。例如。对于 64 位数字,使用 DES 并按顺序加密 0、1、2、3、...。输出保证唯一,因为加密是可逆的。可以为任何方便的数字范围设置 Hasty Pudding Cipher。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-05
      • 2013-04-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多