随机函数简介

一、rand函数的使用

  • srand函数为rand函数指定种子,如果没指定,rand函数默认的种子为1,那么每次产生的随机序列是相同的
  • srand以时间作为随机数的种子,使得rand每次取到的随机序列都不一样
1 #include <time.h>
2 #include <stdlib.h>
3 
4 srand((unsigned)time(NULL));
5 printf("%u\n", rand()%MAX);

  

二、rand_r函数的使用

  • rand_r指定固定值作为种子,每次产生的随机序列是同一个
  • 每调用一次rand会改变它的状态值(如next值),而对于同一进程的多个线程共享这些状态值,所以rand函数是非线程安全的
1 #include <stdlib.h>
2 
3 static unsigned int seed = 123;
4 rand_r(&seed);
5 for(int i = 0;i < 2; ++i) {
6     cout<<rand_r(&seed);               // 产生的值为:2067261 384717275
7 }
8 seed = 123//再次指定seed值为同一个
9 printf("%u\n", rand_r(&seed);        // 2067261

 

posted @ 2018-11-24 15:02  执著的追求  阅读(533)  评论(0)    收藏  举报