关于C语言随机函数
展开全部
把
srand(
time(0)
);
放在循环外每次产生随机数的种子也是一样的啊,为什么产生的随机数就不一样了?
因为随机函数只需要一个种子就能产生一系列的随机数,并不是每个随机数都需要一个种子。
你把
srand(time(0))
放到循环前面就可以了。
原因:
time(0)返回的是系统的时间(从1970.1.1午夜算起),单位:秒,而那个循环运行起来耗时连0.000001秒都不到!
也就是说,srand(time(0))
连着4次的种子是一样的,种子一样,生产的随机数当然是一样了。
如果你在把srand()放循环里面,在中间加个sleep函数,消耗一点时间(间隔大于1秒),那么生成的rand
就不一样了.但是这样做很不好,连着两次用srand生成的种子,间隔一样,生产的随机数间隔有会有规律性。
另:因为两次运行同一程序的时间肯定是不一样的,所以把srand放在循环前面可以得不同的种子,这样才能得到你想要的。
srand(
time(0)
);
放在循环外每次产生随机数的种子也是一样的啊,为什么产生的随机数就不一样了?
因为随机函数只需要一个种子就能产生一系列的随机数,并不是每个随机数都需要一个种子。
你把
srand(time(0))
放到循环前面就可以了。
原因:
time(0)返回的是系统的时间(从1970.1.1午夜算起),单位:秒,而那个循环运行起来耗时连0.000001秒都不到!
也就是说,srand(time(0))
连着4次的种子是一样的,种子一样,生产的随机数当然是一样了。
如果你在把srand()放循环里面,在中间加个sleep函数,消耗一点时间(间隔大于1秒),那么生成的rand
就不一样了.但是这样做很不好,连着两次用srand生成的种子,间隔一样,生产的随机数间隔有会有规律性。
另:因为两次运行同一程序的时间肯定是不一样的,所以把srand放在循环前面可以得不同的种子,这样才能得到你想要的。
展开全部
函数int
rand(void):
从
srand
(seed)中指定的
seed
开始,返回一个[seed,
RAND_MAX(0x7fff))间的随机整数.
此处time(0)时获取当前时间距Epoch时间的秒数,在循环内,你使用time(0)获取到的是相同的值,所有每次设置srand(
time(0)
)后再使用rand就会获取到相同的值。如果在srand(
time(0)
)后休眠1s则每次获得的值将会不同。
srand(
time(0)
)放在循环外,每次调用rand()产生一个随机数,打印的数字是随机的。
rand(void):
从
srand
(seed)中指定的
seed
开始,返回一个[seed,
RAND_MAX(0x7fff))间的随机整数.
此处time(0)时获取当前时间距Epoch时间的秒数,在循环内,你使用time(0)获取到的是相同的值,所有每次设置srand(
time(0)
)后再使用rand就会获取到相同的值。如果在srand(
time(0)
)后休眠1s则每次获得的值将会不同。
srand(
time(0)
)放在循环外,每次调用rand()产生一个随机数,打印的数字是随机的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询