pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

php lcg_value與mt_rand生成0~1隨機(jī)小數(shù)的效果對(duì)比分析

下面小編就為大家?guī)?lái)一篇php lcg_value與mt_rand生成0~1隨機(jī)小數(shù)的效果對(duì)比分析。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

因工作需要使用php生成0~1隨機(jī)小數(shù),之前寫(xiě)過(guò)一篇《php生成0~1隨機(jī)小數(shù)方法》,基于mt_rand()及mt_getrandmax()實(shí)現(xiàn)。

后來(lái)有網(wǎng)友評(píng)論,php原生方法lcg_value()可實(shí)現(xiàn)0~1隨機(jī)小數(shù)生成。

lcg_value說(shuō)明

float lcg_value ( void )

lcg_value() 返回范圍為 (0, 1) 的一個(gè)偽隨機(jī)數(shù)。本函數(shù)組合了周期為 2^31 - 85 和 2^31 - 249 的兩個(gè)同余發(fā)生器。本函數(shù)的周期等于這兩個(gè)素?cái)?shù)的乘積。

返回:范圍為 (0, 1) 的偽隨機(jī)數(shù)。

<?php
for($i=0; $i<5; $i++){
 echo lcg_value().PHP_EOL;
}
?>

輸出:

0.11516515851995
0.064684551575297
0.68275174031189
0.55730746529099
0.70215008878091

兩種生成0~1隨機(jī)小數(shù)方法進(jìn)行比較

1.執(zhí)行時(shí)間比較

執(zhí)行10萬(wàn)次基于mt_rand()與mt_getrandmax()算法的運(yùn)行時(shí)間

<?php
/**
 * 生成0~1隨機(jī)小數(shù)
 * @param Int $min
 * @param Int $max
 * @return Float
 */
function randFloat($min=0, $max=1){
 return $min + mt_rand()/mt_getrandmax() * ($max-$min);
}

// 獲取microtime
function get_microtime(){
 list($usec, $sec) = explode(' ', microtime());
 return (float)$usec + (float)$sec;
}

// 記錄開(kāi)始時(shí)間
$starttime = get_microtime();

// 執(zhí)行10萬(wàn)次獲取隨機(jī)小數(shù)
for($i=0; $i<100000; $i++){
 randFloat();
}

// 記錄結(jié)束時(shí)間
$endtime = get_microtime();

// 輸出運(yùn)行時(shí)間
printf("run time %f ms\r\n", ($endtime-$starttime)*1000);
?>

輸出:run time 266.893148 ms

執(zhí)行10萬(wàn)次lcg_value()的運(yùn)行時(shí)間

<?php
// 獲取microtime
function get_microtime(){
 list($usec, $sec) = explode(' ', microtime());
 return (float)$usec + (float)$sec;
}

// 記錄開(kāi)始時(shí)間
$starttime = get_microtime();

// 執(zhí)行10萬(wàn)次獲取隨機(jī)小數(shù)
for($i=0; $i<100000; $i++){
 lcg_value();
}

// 記錄結(jié)束時(shí)間
$endtime = get_microtime();

// 輸出運(yùn)行時(shí)間
printf("run time %f ms\r\n", ($endtime-$starttime)*1000);
?>

輸出:run time 86.178064 ms

執(zhí)行時(shí)間上比較,因?yàn)閘cg_value()直接是php原生方法,而mt_rand()與mt_getrandmax()需要調(diào)用兩個(gè)方法,并需要進(jìn)行計(jì)算,因此lcg_value()的執(zhí)行時(shí)間大約快3倍。

2.隨機(jī)效果比較

基于mt_rand()與mt_getrandmax()算法的隨機(jī)效果

<?php
/**
 * 生成0~1隨機(jī)小數(shù)
 * @param Int $min
 * @param Int $max
 * @return Float
 */
function randFloat($min=0, $max=1){
 return $min + mt_rand()/mt_getrandmax() * ($max-$min);
}

header('content-type: image/png');
$im = imagecreatetruecolor(512, 512);
$color1 = imagecolorallocate($im, 255, 255, 255);
$color2 = imagecolorallocate($im, 0, 0, 0);
for($y=0; $y<512; $y++){
 for($x=0; $x<512; $x++){
 $rand = randFloat();
 if(round($rand,2)>=0.5){
  imagesetpixel($im, $x, $y, $color1);
 }else{
  imagesetpixel($im, $x, $y, $color2);
 }
 }
}
imagepng($im);
imagedestroy($im);
?>

隨機(jī)效果圖:

php lcg_value與mt_rand生成0~1隨機(jī)小數(shù)的效果對(duì)比分析

lcg_value()的隨機(jī)效果

php lcg_value與mt_rand生成0~1隨機(jī)小數(shù)的效果對(duì)比分析

隨機(jī)效果上比較,可以看出使用mt_rand()與mt_getrandmax()算法生成的隨機(jī)效果較亂序,隨機(jī)效果比lcg_value()較好。

總結(jié):lcg_value()執(zhí)行速度快,但隨機(jī)效果不及基于mt_rand()mt_getrandmax()算法實(shí)現(xiàn)。

以上這篇php lcg_value與mt_rand生成0~1隨機(jī)小數(shù)的效果對(duì)比分析就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持。

【網(wǎng)站聲明】本站除付費(fèi)源碼經(jīng)過(guò)測(cè)試外,其他素材未做測(cè)試,不保證完整性,網(wǎng)站上部分源碼僅限學(xué)習(xí)交流,請(qǐng)勿用于商業(yè)用途。如損害你的權(quán)益請(qǐng)聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。

相關(guān)文檔推薦

這篇文章主要介紹了PHP定義字符串的四種方式,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
下面小編就為大家分享一篇php 替換文章中的圖片路徑,下載圖片到本地服務(wù)器的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
下面小編就為大家分享一篇PHP給源代碼加密的幾種方法匯總(推薦),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
下面小編就為大家分享一篇php打開(kāi)本地exe程序,js打開(kāi)本地exe應(yīng)用程序,并傳遞相關(guān)參數(shù)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
這篇文章主要介紹了PHP類的反射來(lái)實(shí)現(xiàn)依賴注入過(guò)程以及相關(guān)知識(shí)點(diǎn)分享,對(duì)此有興趣的朋友跟著小編學(xué)習(xí)下吧。
php遍歷一個(gè)文件夾內(nèi)的所有文件和文件夾,并刪除所有文件夾和子文件夾下的所有文件的代碼,通過(guò)遞歸方式實(shí)現(xiàn)達(dá)到清空一個(gè)目錄的效果。本文給大家分享實(shí)例代碼,需要的朋友參考
主站蜘蛛池模板: 塑料异型材_PVC异型材_封边条生产厂家_PC灯罩_防撞扶手_医院扶手价格_东莞市怡美塑胶制品有限公司 | 有源电力滤波装置-电力有源滤波器-低压穿排电流互感器|安科瑞 | 垃圾处理设备_餐厨垃圾处理设备_厨余垃圾处理设备_果蔬垃圾处理设备-深圳市三盛环保科技有限公司 | 大巴租车平台承接包车,通勤班车,巴士租赁业务 - 鸿鸣巴士 | 航空铝型材,7系铝型材挤压,硬质阳*氧化-余润铝制品 | 数码管_LED贴片灯_LED数码管厂家-无锡市冠卓电子科技有限公司 | 车辆定位管理系统_汽车GPS系统_车载北斗系统 - 朗致物联 | 无刷电机_直流无刷电机_行星减速机-佛山市藤尺机电设备有限公司 无菌检查集菌仪,微生物限度仪器-苏州长留仪器百科 | 板材品牌-中国胶合板行业十大品牌-环保板材-上海声达板材 | 河南mpp电力管_mpp电力管生产厂家_mpp电力电缆保护管价格 - 河南晨翀实业 | 无线联网门锁|校园联网门锁|学校智能门锁|公租房智能门锁|保障房管理系统-KEENZY中科易安 | 洁净实验室工程-成都手术室净化-无尘车间装修-四川华锐净化公司-洁净室专业厂家 | 爱佩恒温恒湿测试箱|高低温实验箱|高低温冲击试验箱|冷热冲击试验箱-您身边的模拟环境试验设备技术专家-合作热线:400-6727-800-广东爱佩试验设备有限公司 | 环氧树脂地坪_防静电地坪漆_环氧地坪漆涂料厂家-地壹涂料地坪漆 环球电气之家-中国专业电气电子产品行业服务网站! | 烟雾净化器-滤筒除尘器-防爆除尘器-除尘器厂家-东莞执信环保科技有限公司 | 温州在线网| 锂电混合机-新能源混合机-正极材料混料机-高镍,三元材料混料机-负极,包覆混合机-贝尔专业混合混料搅拌机械系统设备厂家 | 深圳APP开发公司_软件APP定制开发/外包制作-红匣子科技 | 合肥触摸一体机_触摸查询机厂家_合肥拼接屏-安徽迅博智能科技 | 油漆辅料厂家_阴阳脚线_艺术漆厂家_内外墙涂料施工_乳胶漆专用防霉腻子粉_轻质粉刷石膏-魔法涂涂 | 济南宣传册设计-画册设计_济南莫都品牌设计公司 | 脱硝喷枪-氨水喷枪-尿素喷枪-河北思凯淋环保科技有限公司 | 重庆小面培训_重庆小面技术培训学习班哪家好【终身免费复学】 | 仓储货架_南京货架_钢制托盘_仓储笼_隔离网_环球零件盒_诺力液压车_货架-南京一品仓储设备制造公司 | 软文世界-软文推广-软文营销-新闻稿发布-一站式软文自助发稿平台 | 氟塑料磁力泵-不锈钢离心泵-耐腐蚀化工泵厂家「皖金泵阀」 | 脉冲布袋除尘器_除尘布袋-泊头市净化除尘设备生产厂家 | 罐体电伴热工程-消防管道电伴热带厂家-山东沃安电气 | 西安标准厂房_陕西工业厂房_西咸新区独栋厂房_长信科技产业园官方网站 | 武汉EPS线条_EPS装饰线条_EPS构件_湖北博欧EPS线条厂家 | 定量包装机,颗粒定量包装机,粉剂定量包装机,背封颗粒包装机,定量灌装机-上海铸衡电子科技有限公司 | 耐高温电缆厂家-远洋高温电缆 | 钢制拖链生产厂家-全封闭钢制拖链-能源钢铝拖链-工程塑料拖链-河北汉洋机械制造有限公司 | 一体式钢筋扫描仪-楼板测厚仪-裂缝检测仪-泰仕特(北京) | 青岛代理记账_青岛李沧代理记账公司_青岛崂山代理记账一个月多少钱_青岛德辉财税事务所官网 | 螺杆泵_中成泵业| 全国冰箱|空调|洗衣机|热水器|燃气灶维修服务平台-百修家电 | 考勤系统_考勤管理系统_网络考勤软件_政企|集团|工厂复杂考勤工时统计排班管理系统_天时考勤 | 海尔生物医疗四川代理商,海尔低温冰箱四川销售-成都壹科医疗器械有限公司 | 二氧化碳/活性炭投加系统,次氯酸钠发生器,紫外线消毒设备|广州新奥 | 钢绞线万能材料试验机-全自动恒应力两用机-混凝土恒应力压力试验机-北京科达京威科技发展有限公司 |