首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

概率不等的随机数生成的1点思路

2012-11-01 
概率不等的随机数生成的一点思路题目:产生0-9中的随机数,要求0到9出现的概率依次递减,一般思路,把10个0,9

概率不等的随机数生成的一点思路

题目:产生0-9中的随机数,要求0到9出现的概率依次递减,一般思路,把10个0,9个1,8个2.....2个8,1个9放到数组中,然后随机生成数组下标,按下标取出数字.二般思路:生成两个0-9的随机数,取小的那个,这个思路(手链魔咒提出)说实际的不知道是什么原理,但是实验证明,确实能达到效果.验证方法: 程序代码<?phpfunction fun(){     $num = rand(0,9); //10以内的数字平均分配     $num2 = rand(0,9);     ($num2<=$num) ? $return.=$num2 : $return.=$num;     return $return;}function totalStr($haystack, $needle,$i = 0){//检验字串中某个字符出现的次数     while(strpos($haystack,$needle) !== false) {         $haystack = substr($haystack, (strpos($haystack,$needle) + 1));         $i++;     }     return $i;}for ($i=0;$i<=1000;$i++){     $str .= fun();}for ($i=0;$i<=9;$i++){     echo totalStr($str,"$i")."\n"; //0-9出现的次数}?>写下这片后不久,手链魔咒有优化了算法具体见下: 程序代码function getRand($min,$max) {       $num=rand($min,$max);       return rand($min,$num);   }还有另一位高人写的一个函数,数学思想比较强,不太好理解 程序代码function getRandomByFactor($max,$factor=2){   $c = rand(0,pow($max,$factor));    return $max - ceil(pow($c,1/$factor));   }

热点排行