作者dinos (守护神)
看板PHP
标题Re: [请益] random()的写法
时间Mon Nov 28 11:55:23 2005
※ 引述《sonyblue (Gloomy Bear)》之铭言:
: 标题: [请益] random()的写法
: 时间: Sun Nov 27 01:22:43 2005
: 请问一下,random()这个函数
: 用php怎麽实做出来......
: 还是有资料可以参考一下
: --
:
※ 发信站: 批踢踢实业坊(ptt.cc)
: ◆ From: 210.71.10.1
: 推 johnney:你要的是?php source 或者是线上 manual? 11/27 12:27
: 推 ottokang:请去PHP手册搜寻"random" 11/27 19:13
: 推 sonyblue:不是用法哦,是这个函数的写法= = 11/28 00:52
: 推 EShensh:变数=rand(最小值,最大值); 11/28 06:01
: → EShensh:实作? 想实做乱数,直接抓 Timer 如何... 11/28 06:02
//首先要有乱数表
//然後就可以从 randTest() 里取乱数了
//当然,照惯例,以下范例都是唬烂出来的 XD
$randMapSize=256;
$randMap="3921487237584330912831029309210947281375464823209146580127401928 \
9392174382653265743812739128321473286512310928319274821657561728 \
1093701091829742187432657326518291731019823917248327655832742183 \
0121029831927418243265312381927432657102392174835091293129874321";
define('_rand_map_',$randMap);
define('_rand_map_size_',$randMapSize);
define('_rand_seed_',false);
function randTest($min=null,$max=null) {
$min=intval($min);
$max=intval($max);
$timeNow=explode(" ",microtime());
$timeNow[0]=intval(substr($timeNow[0],2));
if(empty(_rand_seed_)) {
$startPoint=($timeNow[1]-$timeNow[0]) % _rand_map_size_;
$numberLen=date("s");
}
$randNumber=substr(_rand_map_,$startPoint,$numberLen);
if($min>=0 && $max>=0 && $max>$min) {
while($randNumber < $min || $randNumber > $max) {
$startPoint--;
if($min > $randNumber) $randNumber+=$startPoint;
if($max < $randNumber) $randNumber%=$max;
}
}
return $randNumber;
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.113.158.10