首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rand函数生成5位数,如何使其生成11位数

rand函数生成5位数,如何使其生成11位数
EN

Stack Overflow用户
提问于 2013-06-02 19:07:31
回答 3查看 824关注 0票数 1

我有一个名为"message_group“的表,该表包含"user_one、user_two和hash”字段。哈希是int(11)。使用下面的代码,我将值插入到这个表中。我使用的是rand()函数。我的问题是,这个函数只将一个5位数插入我的表中的散列字段。我希望这个数字是11位数。我如何修改我的代码来实现这一点呢?

代码语言:javascript
复制
if( isset($_POST['message']) && !empty($_POST['message'])  ){
    $random_number = rand();

    $check_con = mysql_query("SELECT `hash` FROM `message_group` WHERE (`user_one`='$session_user_id' AND `user_two`='$user_id') OR (`user_one`='$user_id' AND `user_two`='$session_user_id')");

    if( mysql_num_rows($check_con) == 1 ){
        echo"conversation already started";
    }else{
        mysql_query(" INSERT INTO message_group VALUES ('$session_user_id', '$user_id', '$random_number') ");
        echo"conversation started";
    }
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-06-02 19:18:51

PHP的rand()在某些平台上只有15位。您可以使用以下命令将其增加到30位:

代码语言:javascript
复制
((rand() << 15) ^ rand())

这将为您提供一个范围在0..1073741823之间的数字,仍然是均匀分布的。如果你需要更具体的东西,而不仅仅是更大的范围,你必须在那之后做一些更花哨的数学运算。您也可以考虑使用mt_rand()。

票数 3
EN

Stack Overflow用户

发布于 2013-06-02 19:14:29

来自PHP rand()

注意:在某些平台上(比如Windows),getrandmax()只有32767。如果需要大于32767的范围,指定min和max将允许您创建一个大于此范围的范围,或者考虑改用mt_rand()。

因此,不要使用默认值并指定min和max

代码语言:javascript
复制
int rand ( int $min , int $max )
票数 1
EN

Stack Overflow用户

发布于 2013-06-02 19:26:19

通过重复乘法和加法,可以从16位RNG生成具有任意位数的均匀分布随机数。示例(伪代码):

代码语言:javascript
复制
ans=0;
mult = MAXRAND+1;
for(i=0;i<5;i++) ans=mult*ans+rand();

只要ans能够保存结果,就可以通过这种方式使任意大小的随机数均匀分布。显然,您希望确保处理溢出,并限制末尾的位数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16882156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档