c++ 中 为什么要将srand(time(0))放在主函数中才起作用。

c++中为什么要将srand(time(0))放在主函数中才起作用。我将srand(time(0))放在类中的时候发现对应输出的数据并不随机,而且特定某一组的数据是相同的... c++ 中 为什么要将srand(time(0))放在主函数中才起作用。
我将srand(time(0))放在类中的时候发现对应输出的数据并不随机,而且特定某一组的数据是相同的,我用的是eclipse,请问是编译器的问题,还是?????
有劳各位了!!!!!!!!!!!!
展开
 我来答
solotony
推荐于2018-04-12 · TA获得超过599个赞
知道小有建树答主
回答量:700
采纳率:0%
帮助的人:596万
展开全部
首先,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个分段。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式