分享

C中的随机数(妈的, 搞了我3个小时)

 skywood 2006-11-04
在devc++4.9.9.2 编译通过
#include<stdlib.h>   
 #include<time.h>   
 int main()   
 {   
    int   i,stime;   
    srand((unsigned)time(NULL));   
    printf("Ten   random   numbers   form   0   to   1000!\n");   
    for(i=0;i<10;i++)   
    printf("%d\t",rand()%1000);   
    printf("\n");  
  }  
 
 
   rand(void)用于产生一个伪随机unsigned int 整数。srand(seed)用于给rand()函数设定种子。
于是我把它贴到机器上, 做了一个10次循环, 没想到每次都生成一摸一样的10个数, 百思不得其解。。。。。。。。
最后终于弄明白了, 用现在的时间做种, 而time函数返回值是以秒为单位的, 10个循环当然在1秒以内。。。。。。所以才会有这个结果

BTW, Dev-c++ 4.9.9.2 can not support randomize() & random(int num);
 some body saying:  "
srand()
是用来初始化随机种子数的,因为rand的内部实现是用线性同余法做的,他不是真的随机数,只不过是因为其周期特别长,所以有一定的范围里可看成是随机的,式子如下 rand = rand*const_1 + c_var;srand函数就是给它的第一个rand值。
用 int x = rand() % 100;来生成 0 到 100 之间的随机数这种方法是不或取的,比较好的做法是: j=(int)(n*rand()/(RAND_MAX+1.0))  // 产生一个0到n之间的随机数
 "
 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多