rand值出现负数的解决方案
当rand($number)或者mt_rand($number)的时候,$number太大,超过pow(2,31) - 1;即整型最大值的时候,会出现负数。
如果只是单纯转换成整数而已的话,可以采用sprintf('%u', $number)来处理,如果是概率统计,过滤一定的范围的话,可以看看如下解决方案:
public function my_mt_rand($randMaxValue) {
$intMaxValue = pow(2,31) - 1; //rand函数最大值
$maxValueLen = strlen($randMaxValue); //最大值的长度
$intMaxValueLen = strlen($intMaxValue); //rand函数最大值的长度
/*if($randMaxValue>$intMaxValue){
$randValue = mt_rand(0, $intMaxValue);
}else{
$randValue = mt_rand(0, $randMaxValue);
}
return $randValue;*/
if ($randMaxValue > $intMaxValue) {
if ($maxValueLen == $intMaxValueLen) {
//$randValue = mt_rand(0, $intMaxValue);
$randValue = $this->getIntMaxBetween($randMaxValue, $intMaxValue);
} else {
$temp_a = mt_rand(0, substr($randMaxValue, -$intMaxValueLen)); //低位
if ($temp_a > $intMaxValue) {
$temp_a = $this->getIntMaxBetween($temp_a, $intMaxValue);
}
$temp_b = mt_rand(0, substr($randMaxValue, 0, ($maxValueLen - $intMaxValueLen))); //高位
$randValue = $temp_a + $temp_b * pow(10,$intMaxValueLen);
}
}else{
$randValue = mt_rand(0, $randMaxValue);
}
return $randValue;
}
public function getIntMaxBetween($a, $b) {
if ($a > $b) {
$divideNumber = intval($a/$b);
$modNumber = intval($a%$b);
$returnVal = 0;
//$returnVal = mt_rand(0,$divideNumber) * mt_rand(0,$b);
if ($divideNumber > 10) {
$returnVal += mt_rand(0,$divideNumber) * mt_rand(0,$b);
} else {
for($m = 0; $m < $divideNumber; $m++) {
$returnVal += mt_rand(0,$b);
}
}
if ($modNumber > 0) {
$returnVal += mt_rand(0,$modNumber);
}
return $returnVal;
} else {
$returnVal = mt_rand(0, $a);
}
return $returnVal;
}
调用:$randValue = $this->my_mt_rand($randMaxValue);//获取随机数
rand值出现负数的解决方案的更多相关文章
- jquery ajax return值不能取得的解决方案
jQuery ajax - ajax() 方法 http://www.w3school.com.cn/jquery/ajax_ajax.asp http://www.cnblogs.com/fqw19 ...
- @Value取值为NULL的解决方案------https://blog.csdn.net/zzmlake/article/details/54946346
@Value取值为NULL的解决方案 https://blog.csdn.net/zzmlake/article/details/54946346
- C# Json反序列化 C# 实现表单的自动化测试<通过程序控制一个网页> 验证码处理类:UnCodebase.cs + BauDuAi 读取验证码的值(并非好的解决方案) 大话设计模式:原型模式 C# 深浅复制 MemberwiseClone
C# Json反序列化 Json反序列化有两种方式[本人],一种是生成实体的,方便处理大量数据,复杂度稍高,一种是用匿名类写,方便读取数据,较为简单. 使用了Newtonsoft.Json,可以自 ...
- Android .getRGB得到是负数,解决方案
情景:ava.awt.color 下面的getRGB怎么得出的是负数???本来想通过getRGB得到一个整数,在另外的一个部分在根据这个整数构件一个color,因为参数规定只能能传整数!!!color ...
- 验证码处理类:UnCodebase.cs + BauDuAi 读取验证码的值(并非好的解决方案)
主要功能:变灰,去噪,等提高清晰度等 代码类博客,无需多说,如下: public class UnCodebase { public Bitmap bmpobj; public UnCodebase( ...
- IOS9.0中hash值的bug与解决方案
事件起因 事情是这样的:产品上线发布,突然出现了问题.运营Gg过来反应,当场给露珠演示,运营同事的手机是iphone,bug确实是存在的.奇怪的是露珠用了其他iphone手机(借别人的,露珠的是吊死安 ...
- Js获取元素样式值(getComputedStyle¤tStyle)兼容性解决方案
因为:style(document.getElementById(id).style.XXX)只能获取元素的内联样式,内部样式和外部样式使用style是获取不到的. 一般js获取内部样式和外部样式使用 ...
- selenium中webdriver识别class属性多个值中有空格的解决方案
初学自动化测试,貌似大家十有八九都是用百度网站进行练手的,特此感谢百度. http://www.baidu.com 页面中主要就是搜索框和提交按钮: 输入框各元素属性:<input id=&qu ...
- C#中当服务器返回的数据json中key的值为数字类型,解决方案
客户端向服务器发送请求后,服务器返回了一个json格式的字符串但是格式中key的值有些事数字{"1000":"55555"}; 类似这种格式的话就不能直接转化成 ...
随机推荐
- Storm实战常见问题及解决方案
该文档为实实在在的原创文档,转载请注明: http://blog.sina.com.cn/s/blog_8c243ea30101k0k1.html 类型 详细 备注 该文档是群里几个朋友在storm实 ...
- Android WebView常见问题的解决方案总结----例如Web page not available
之前android虚拟机一直都可以直接联网,今天写了一个WebView之后,突然报出了Web page not available的错误,但是查看虚拟机自带的浏览器,是可以上网的,所以检查还是代码的问 ...
- 在word中显示漂亮的代码
在word中粘贴或写代码时,通常得不到想要的格式,可用‘Notepad++’工具实现. 步骤: (1)安装Notepad++软件,把代码粘贴进去,选择菜单栏中的语言,然后选择相应代码语言,如P-> ...
- 为Fitnesse-20140630定制RestFixture代码
摘要:Fitnesse插件RestFixture在最新版Fitnesse输出测试结果为html文本,而非html.本博文记录RestFixture定制代码的过程. 准备开发环境 假定你已经正确安装JD ...
- PHP中的替代语法
今天看了一下wordpress的代码,里面有些少见的php替代语法, <?php else : ?> <div class="entry-content"> ...
- wuzhicms访问统计实现方法
实现目标:程序实现了对整站页面pv的统计文件的位置:coreframe/app/content/pv.php代码预览: /** * 总站访问次数统计 */ defined('IN_WZ') or ex ...
- c#调用c++ dll的几种类型(转)
http://www.sosuo8.com/article-2012/dllleixingzhuanhuan.htm 在合作开发时,C#时常需要调用C++DLL,当传递参数时时常遇到问题,尤其是传 ...
- django form关于clean及cleaned_data的说明 以及4种初始化
1.form类的运行顺序是init,clean,validte,save其中clean和validate会在form.is_valid()方法中被先后调用.(这里留有一个疑问,结构完全相同的两个f ...
- Layout No collapsible
center 不可折叠 其它的,没有 title 没法折叠 title 使用子控件的
- Zookeeper实现分布式选举算法
分布式系统中经常采用Master/Slave架构.(截止到目前为止我还没有碰到过其他架构...)这种架构中如果Master发生故障就会导致整个集群停止服务,为了提高系统的高可用性通常采用选举算法来选出 ...