Rand函数
单纯的rand()会返回一个0至RAND_MAX之间的随机数值,而RAND_MAX的值与int位数有关,最小是32767。不过rand()是一次性的,因为系统默认的随机数种子为1,只要随机数种子不变,其生成的随机数序列就不会改变。
srand函数
srand()可用来设置rand()产生随机数时的随机数种子。通过设置不同的种子,我们可以获取不同的随机数序列。可以利用srand((unsigned int)(time(NULL))的方法,利用系统时钟,产生不同的随机数种子。
示例:
1 #include "stdafx.h" 2 #include <iostream> 3 #include <stdlib.h> 4 #include <time.h> 5 6 #define random(x,y) (((double)rand()/RAND_MAX)*(y-x+1)+x) 7 8 using namespace std; 9 10 int _tmain(int argc, _TCHAR* argv[]) 11 { 12 srand((int)time(NULL)); 13 14 for (int i = 0; i < 200; i++) 15 { 16 cout << "num : " << (int)random(0, 10) << endl; 17 } 18 19 getchar(); 20 return 0; 21 }
随机数获取范围的方法
(double)rand()/RAND_MAX)*(y-x+1)+x)
(0,x)的随机整数:rand()%x 或者 (double)rand()/RAND_MAX)*(x)
(a,b)的随机整数:rand()%(b-a) 或者 (double)rand()/RAND_MAX)*(b-a-1)+a+1
[a,b)的随机整数:rand()%(b-a)+a 或者 (double)rand()/RAND_MAX)*(b-a)+a
[a,b]的随机整数:rand()%(b-a+1)+a 或者 (double)rand()/RAND_MAX)*(b-a+1)+a
(a,b]的随机整数:rand()%(b-a)+a+1 或者 (double)rand()/RAND_MAX)*(b-a)+a+1
0-1之间的浮点数:rand()/double(RAND_MAX)。