php rand 1 100,PHP – rand(1,1000)= 1000可能与rand(1,1000)= rand(1,1000)?

让数据说明一切.

vinko@parrot:~$more rand.php

$randrandsum = 0;

$randconstsum = 0;

$count = 20;

for ($j = 0; $j < $count; $j++) {

$randrand = 0;

$randconst = 0;

for ($i = 0; $i < 10000000; $i++ ){

$a = rand(1,1000);

$b = rand(1,1000);

if ($a == $b) $randrand++;

}

for ($i = 0; $i < 10000000; $i++ ){

$a = rand(1,1000);

$c = 1000;

if ($c == $a) $randconst++;

}

$randrandsum += $randrand;

$randconstsum += $randconst;

print ($j+1)." RAND-RAND: $randrand RAND-CONST: $randconst\n";

}

print "AVG RAND-RAND: ".($randrandsum/$count);

print " AVG RAND-CONST: ".($randconstsum/$count)."\n";

?>

测试运行

vinko@parrot:~$php rand.php

1 RAND-RAND: 10043 RAND-CONST: 10018

2 RAND-RAND: 9940 RAND-CONST: 10132

3 RAND-RAND: 9879 RAND-CONST: 10042

4 RAND-RAND: 9878 RAND-CONST: 9965

5 RAND-RAND: 10226 RAND-CONST: 9867

6 RAND-RAND: 9866 RAND-CONST: 9992

7 RAND-RAND: 10069 RAND-CONST: 9953

8 RAND-RAND: 9967 RAND-CONST: 9862

9 RAND-RAND: 10009 RAND-CONST: 10060

10 RAND-RAND: 9809 RAND-CONST: 9985

11 RAND-RAND: 9939 RAND-CONST: 10057

12 RAND-RAND: 9945 RAND-CONST: 10013

13 RAND-RAND: 10090 RAND-CONST: 9936

14 RAND-RAND: 10000 RAND-CONST: 9867

15 RAND-RAND: 10055 RAND-CONST: 10088

16 RAND-RAND: 10129 RAND-CONST: 9875

17 RAND-RAND: 9846 RAND-CONST: 10056

18 RAND-RAND: 9961 RAND-CONST: 9930

19 RAND-RAND: 10063 RAND-CONST: 10001

20 RAND-RAND: 10047 RAND-CONST: 10037

AVG RAND-RAND: 9988.05 AVG RAND-CONST: 9986.8

鉴于上述结果,我会说,出于所有实际目的,两个选项都是等价的,给出了两种情况下预期的1/1000结果.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这是一个语法错误,正确的写法应该是:p->data = rand() % 2; 这行代码的意思是将 p 指向的结构体中的 data 成员赋值为 0 或 1,其中的 rand() 函数会随机生成一个整数,% 2 的作用是将这个整数对 2 取模,结果只能是 0 或 1。 ### 回答2: 给定一个指向结构体的指针p,p->data=rand()%2的结果为0或1。这行代码实际上是在p指向的结构体中的data字段赋值一个随机数,该随机数是使用rand()函数生成的。rand()是一个标准库函数,它用于生成一个伪随机数。通过对其结果取模2,得到的数值只能是0或1。因此,p->data=rand()%2表示将p指向的结构体中的data字段赋值为0或1中的一个随机数。 需要注意的是,这个随机数并不是真正的随机数,而是伪随机数。rand()函数生成的随机数是通过一种特定的算法产生的,每次运行程序生成的数序列是相同的。为了增加随机性,可以在使用rand()函数之前调用srand()函数来设置随机数生成的种子。种子值可以是时间、进程ID等变量,以确保每次运行程序生成不同的随机数序列。否则,如果不设置种子,每次程序执行时生成的随机数序列都是相同的。 ### 回答3: 这个表达式的意思是将变量p所指向的数据(即*p)赋值为一个随机生成的0或1。其中,rand()函数是一个随机数生成器,它可以生成一个介于0和RAND_MAX之间的随机数。而0和1之间的随机数可以用这样的表达式rand()%2来生成,其中%表示取模操作,即将rand()生成的随机数与2取模,结果只会是0或1。所以,p->data=rand()%2的意思就是将p所指向的数据赋值为一个随机生成的0或1。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值