我将我的照片存储在名为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数组吗?
答案 0 :(得分:0)
非重复随机数问题有三种通用解决方案:
如果你想要一个大范围的几个数字,那么选择一个并拒绝它,如果它是重复的。如果范围很大,那么这不会导致重复尝试太多。
如果你想要一个小范围的很多数字,那么列出一个数组中的所有数字并随机播放数组。 Fisher-Yates算法是阵列改组的标准。从随机数组中按顺序获取随机数。
如果您想要大范围内的大量数字,请使用适当大小的加密算法。例如。对于64位数字,使用DES并按顺序加密0,1,2,3 .......由于加密是可逆的,因此输出保证唯一。可以为任何方便的数字范围设置Hasty Pudding Cipher。