问几个函数的含义

huangelin2882 2010-03-25 07:54:37
小弟学php不久,现在在看人家写的程序
看到一段:
srand((double)microtime()*1000000);

$randval = rand(0,1);

这两句都有什么作用?
...全文
128 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wide288 2010-03-26
  • 打赏
  • 举报
回复
srand((double)microtime()*1000000);//播下随机数发生器种子

microtime() 取得很细的时间值。再转成 double 类型变量。,再变大 1000000倍。
在 1 到 上面的数之间取值。一个整数。
就是随机数了。
江南昆虫 2010-03-26
  • 打赏
  • 举报
回复
初学者要多查手册啊.....
rayhome1987 2010-03-26
  • 打赏
  • 举报
回复
php 4.2后就不需要手动调用srand了。直接使用rand即可。
关于 srand怎么说呢,
计算机的随机算法其实被称为伪随机算法,

1.计算机的伪随机数是由随机种子根据一定的计算方法计算出来的数值。所以,只要计算方法一定,随机种子一定,那么产生的随机数就是固定的。
2.只要用户或第三方不设置随机种子,那么在默认情况下随机种子来自系统时钟。

为了保证这个产生随机数的随机性,我们人为地为这个随机数种子取值,也就是调用 srand这个函数。
看一段代码:

//rand01.c
#include
static unsigned int RAND_SEED;
unsigned int random(void)
{
RAND_SEED=(RAND_SEED*123+59)%65536;
return(RAND_SEED);
}
void random_start(void)
{
int temp[2];
movedata(0x0040,0x006c,FP_SEG(temp),FP_OFF(temp),4);
RAND_SEED=temp[0];
}
main()
{
unsigned int i,n;
random_start();
for(i=0;i<10;i++)
printf("%u\t",random());
printf("\n");
}


这里 random_start()对应于srand函数。当然这段代码种子值通过主板上的定时/计数器在内存中的值来实现这一算法,很漂亮。
huangelin2882 2010-03-26
  • 打赏
  • 举报
回复
各位,在下深表感激。特别是rayhome1987
huangelin2882 2010-03-26
  • 打赏
  • 举报
回复
二楼,不好意思,我才没学多少天。
srand((double)microtime()*1000000);//播下随机数发生器种子
能不能再通俗一点呢?
这个语句有什么实际用途?
多用于什么情况呢?
lypfriends 2010-03-25
  • 打赏
  • 举报
回复
学习了
餅餅 2010-03-25
  • 打赏
  • 举报
回复
srand((double)microtime()*1000000);//播下随机数发生器种子

$randval = rand(0,1);//产生0到1之间的随机数 这里即 0或者1

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧