御笔剑客 发表于 2017-11-13 13:27:07

关于c语言随机数的代码

int main()
{
   srand((unsigned) time(NULL)); //用时间做种,每次产生随机数不一样

   for (int i=0; i<10; i++)
   {
   int number = rand() % 12 + 1;//产生1-13的随机数
   printf("%d\n", number);
   }
   
   return 0;
}
用时间做种是什么意思呢?
int number = rand() % 12 + 1;   这句%12 + 1又是什么意思呢?

BngThea 发表于 2017-11-13 13:36:54

用时间做种是什么意思呢?
每个随机数都需要一个起点,如果不设置种子的话,每次程序运行得到的随机数都会是一样的
用时间做种的意思就是将程序运行的时刻作为一个种子点,这种可以保证绝大多数情况下运行程序生成的随机数都不一样

int number = rand() % 12 + 1;   这句%12 + 1又是什么意思呢?
rand() 表示生成一个随机数
rand() % 12 将这个随机数取余,得到的是0~11
rand() % 12 + 1 最后再加1,最终得到一个1~12之间的随机数

御笔剑客 发表于 2017-11-13 13:37:36

BngThea 发表于 2017-11-13 13:36
用时间做种是什么意思呢?
每个随机数都需要一个起点,如果不设置种子的话,每次程序运行得到的随机数都会 ...

我明白了,谢谢

御笔剑客 发表于 2017-11-13 13:45:00

BngThea 发表于 2017-11-13 13:36
用时间做种是什么意思呢?
每个随机数都需要一个起点,如果不设置种子的话,每次程序运行得到的随机数都会 ...

srand((unsigned) time(NULL))
这句我还是有点不太理解,能不能解释一下呢?{:10_266:}

BngThea 发表于 2017-11-13 13:50:21

御笔剑客 发表于 2017-11-13 13:45
srand((unsigned) time(NULL))
这句我还是有点不太理解,能不能解释一下呢?

这是一个随机库的函数而已,里面传递一个种子
其实没必要弄清楚,你只要知道生成随机数要用到它就行了
如果一定要搞清楚,请百度看看相关文章,要解释起来得长篇大论了

御笔剑客 发表于 2017-11-13 14:22:00

BngThea 发表于 2017-11-13 13:50
这是一个随机库的函数而已,里面传递一个种子
其实没必要弄清楚,你只要知道生成随机数要用到它就行了
...

好的,谢谢了
页: [1]
查看完整版本: 关于c语言随机数的代码