码迷,mamicode.com
首页 > 编程语言 > 详细

关于windows下c/c++的rand()的一些测试

时间:2016-07-21 21:33:36      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:

int xs[]={-1,0,1,0};
int ys[]={0,-1,0,1};
int x=0,y=0;
for(int t=0;t<1<<18;t++){
    int d=rand()%4;
    x+=xs[d];y+=ys[d];
    在(x,y)绘制一个点;
}

根据rand()%4的值决定点的移动方向,生成图像如下,可以发现无论srand()设置的种子是什么,周期都为218 即262144

生成的图形形状方向也完全一样,但起点由于随机种子不同在图中的位置不同
技术分享

rand()%8的周期为219

rand()%2n 周期为 2n+16  (0<n<=15)

rand()%3及模其它非2次幂的数则有较长的循环周期

rand()所生成的伪随机数有其非随机的对称性和循环性,可能会影响某些需要真随机数满足期望的算法的复杂度或正确率,但一般较难观察到rand()的规律性对很多随机化算法的影响

关于windows下c/c++的rand()的一些测试

标签:

原文地址:http://www.cnblogs.com/ccz181078/p/5693130.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!