2014-09-21 150 views
0

我有我的照片存储在服务器文件命名的图像,有超过300个。在数据库中,我将这些图片分配给了ID。随机图像不重复php

在数据库就像

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数组吗?

回答

0

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

  • 如果你想从一个大范围的几个号码,然后选择一个并拒绝它,如果它是一个重复。如果范围很大,那么这不会造成太多的重复尝试。

  • 如果你想从很小的范围内得到很多数字,那么在数组中设置所有的数字并对数组进行混洗。 Fisher-Yates算法是数组混排的标准。从混洗阵列中依次选取随机数。

  • 如果你想要大量的数字,然后使用适当大小的加密算法。例如。对于64位数字使用DES并按顺序加密0,1,2,3 ...。输出保证是唯一的,因为加密是可逆的。快速布丁密码可以设置为任何方便的数字范围。