srand(time(0));⼀⼀设置时间种子是什么意思(是c语言中的)

2024年11月17日 06:24
有3个网友回答
网友(1):

因为系统的时间每次都不同,这样可以避免每次产生的随机数都相同

网友(2):

从1970年1月1日到现在时间的秒数

网友(3):

计算机产生的随机数并不是真正随机的,所以叫 伪随机数。
当“种子”固定时,它产生的随机数序列是不变的,例如产生10个数,这10个数大小是变化的,但只要用这个种子,每次产生的这10个数序列,是一模一样的。
用 srand(time(0)); 设种子,就会因时间变化,得到不同的种子,那么随机数序列就会变化。
time(0) 是当前时间,(精度可能是毫秒)。只要两次跑程序启动时间差别 超过1毫秒,两个序列就不同了(随机)。如果,时间差别不到1毫秒,两个序列就没变化。
--------
错误的程序:
for (i=0;i<5;i++){
srand(time(0)); // 5次的种子若不变
printf("%d ",rand()); // 依次取 5个序列的 第一个数
}
5个数不变化。
-------------------
正确的程序:
srand(time(0)); // 设1次种子
for (i=0;i<5;i++){
printf("%d ",rand()); //依次取1个序列的第1到第5个随机数
}
5个数变化