本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

更改 PHP 中 RAND() 函数的种子?

发布于2024-11-26 12:51     阅读(1040)     评论(0)     点赞(9)     收藏(1)


我通过 PHP 脚本访问我的数据库表,有时会得到连续重复的结果。

我运行了这个查询:

$query ="SELECT Question,Answer1,Answer2 FROM MyTable ORDER BY RAND(UNIX_TIMESTAMP(NOW())) LIMIT 1";

在此查询之前,我尝试过使用ORDER BY RAND(),但它给了我很多连续重复的结果,这就是我决定使用的原因ORDER BY RAND(UNIX_TIMESTAMP(NOW()))。但最后一个仍然给了我连续重复的结果(但更少)。

我要写一个例子来解释我所说的“连续重复结果”是什么意思:

假设我的表中有 100 行:ROW1、ROW2、ROW3、ROw4、ROW5......好吧,当我连续调用我的脚本 PHP 5 次时,我得到了 5 个结果:-ROW2 、ROW20、ROW20、ROW50、ROW66

我不希望同一行连续出现两次。我想要的是:- ROW2、ROW20、ROW50、ROW66、ROW20

我只是想用一些简单的方法修复它。


解决方案


https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_rand

RAND() 并非完美的随机生成器。它是一种快速生成随机数的方法,可根据需要在相同 MySQL 版本的平台之间移植。

如果你想要 5 个结果,为什么不将限制改为 5 呢?这将确保没有重复

另一个选项是读出所有数据,然后在 php 中使用 shuffle ?http://php.net/manual/en/function.shuffle.php

或者选择最大值并使用 PHP 生成的随机数

http://php.net/manual/en/function.mt-rand.php



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:http://www.phpheidong.com/blog/article/554960/3757e3a6de3fac997fa2/

来源:php黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

9 0
收藏该文
已收藏

评论内容:(最多支持255个字符)