php概率函数,PHP全概率运算函数(优化版) Webgame开发必备

代码如下:

$setting = array(

// 黑色概率

0 => 0.99,

// 白色概率

1 => 0.01,

);

// Requires the GD Library

header("Content-type: image/png");

$im = imagecreatetruecolor(256, 256) or die("Cannot Initialize new GD image stream");

$white = imagecolorallocate($im, 255, 255, 255);

$start = microtime(true);

for ($y=0; $y<256; $y++) {

for ($x=0; $x<256; $x++) {

if (random($setting) === 1) {

imagesetpixel($im, $x, $y, $white);

}

}

}

$time = microtime(true) - $start;

header("X-Exec-Time: ".$time);

imagepng($im);

imagedestroy($im);

/**

* 全概率计算

*

* @param array $p array('a'=>0.5,'b'=>0.2,'c'=>0.4)

* @return string 返回上面数组的key

* @author Lukin

*/

function random($ps){

static $arr = array(); $key = md5(serialize($ps));

if (!isset($arr[$key])) {

$max = array_sum($ps);

foreach ($ps as $k=>$v) {

$v = $v / $max * 10000;

for ($i=0; $i

}

}

return $arr[$key][mt_rand(0,count($arr[$key])-1)];

}

?>

黑点出现概率99%,白点出现概率1%,测试结果:

1-191204111412528.png

1-19120411141HP.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值