我有一个名为"message_group“的表,该表包含"user_one、user_two和hash”字段。哈希是int(11)。使用下面的代码,我将值插入到这个表中。我使用的是rand()函数。我的问题是,这个函数只将一个5位数插入我的表中的散列字段。我希望这个数字是11位数。我如何修改我的代码来实现这一点呢?
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";
}
}发布于 2013-06-02 19:18:51
PHP的rand()在某些平台上只有15位。您可以使用以下命令将其增加到30位:
((rand() << 15) ^ rand())这将为您提供一个范围在0..1073741823之间的数字,仍然是均匀分布的。如果你需要更具体的东西,而不仅仅是更大的范围,你必须在那之后做一些更花哨的数学运算。您也可以考虑使用mt_rand()。
发布于 2013-06-02 19:14:29
注意:在某些平台上(比如Windows),getrandmax()只有32767。如果需要大于32767的范围,指定min和max将允许您创建一个大于此范围的范围,或者考虑改用mt_rand()。
因此,不要使用默认值并指定min和max
int rand ( int $min , int $max )发布于 2013-06-02 19:26:19
通过重复乘法和加法,可以从16位RNG生成具有任意位数的均匀分布随机数。示例(伪代码):
ans=0;
mult = MAXRAND+1;
for(i=0;i<5;i++) ans=mult*ans+rand();只要ans能够保存结果,就可以通过这种方式使任意大小的随机数均匀分布。显然,您希望确保处理溢出,并限制末尾的位数。
https://stackoverflow.com/questions/16882156
复制相似问题