
c++ 中 为什么要将srand(time(0))放在主函数中才起作用。
c++中为什么要将srand(time(0))放在主函数中才起作用。我将srand(time(0))放在类中的时候发现对应输出的数据并不随机,而且特定某一组的数据是相同的...
c++ 中 为什么要将srand(time(0))放在主函数中才起作用。
我将srand(time(0))放在类中的时候发现对应输出的数据并不随机,而且特定某一组的数据是相同的,我用的是eclipse,请问是编译器的问题,还是?????
有劳各位了!!!!!!!!!!!! 展开
我将srand(time(0))放在类中的时候发现对应输出的数据并不随机,而且特定某一组的数据是相同的,我用的是eclipse,请问是编译器的问题,还是?????
有劳各位了!!!!!!!!!!!! 展开
1个回答
展开全部
首先,srand/rand生成的是随机序列,不是真正完全不重复,无规则的数,而是基于某个种子数(一般是时间为种子,即time(0))计算的一个序列。当种子相同时,序列完全相同。
其次,srand应该是每组随机数调用一次,不是每次rand之前都调用,也不是调用一次后再也不调用。
第三,rand生成的随机序列是在0到RANDOM_MAX之间随机分布,通常rand() % M得到的0~M之间的随机数很可能不随机分布,正确的做法是
把RANDOM_MAX分成M段,每段有RANDOM_MAX / M + 1个数,rand()/(RANDOM_MAX/M +1)得到第X个分段。
其次,srand应该是每组随机数调用一次,不是每次rand之前都调用,也不是调用一次后再也不调用。
第三,rand生成的随机序列是在0到RANDOM_MAX之间随机分布,通常rand() % M得到的0~M之间的随机数很可能不随机分布,正确的做法是
把RANDOM_MAX分成M段,每段有RANDOM_MAX / M + 1个数,rand()/(RANDOM_MAX/M +1)得到第X个分段。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |