rand():
rand()是用线性同余法实现的,因此不是真的随机数,但因其周期特别长,故在一定
的范围里可看成是随机的。
rand()返回一随机数值的范围在0至RAND_MAX 间。RAND_MAX的范围最少是在32767之间(int)。用
unsigned int 双字节是65535,四字节是4294967295的整数范围。0~RAND_MAX每个数字被选中
的机率是相同的。
用户未设定随机数种子时,系统默认的随机数种子为1。
rand()产生的是伪随机数字,每次执行时是相同的;若要不同,用函数srand()初始化它。
srand():
srand()用来设置rand()产生随机数时的随机数种子。
参数seed必须是个整数,通常可以利用time(0)的返回值或NULL来当做seed。
如果每次seed都设相同值,rand()所产生的随机数值每次就会一样。
rand()和srand()的关系:
rand()和srand()要一起使用,其中srand()用来初始化随机数种子,rand()用来产生随机数。因为默认情况下随机数种子为1,而相同的随机数种子产生的随机数是一样的,失去了随机性的意义,所以为使每次得到的随机数不一样,用函数srand()初始化随机数种子。srand()的参数,用time函数值(即当前时间),因为两次调用rand()函数的时间通常是不同的,这样就可以保证随机性了。(摘自:http://www.jb51.net/article/102529.htm)
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main() {
int k = 50;
int low = 1, high = 10;
srand(time(0)); srand()一定要放在循环外面或者是循环调用的外面,否则的话得到的是相同的随机数
while(k--) {
int x = low + rand() % (high - low); //[low,high)
//int x = low + 1 + rand() % (high - low); //(low,high]
//int x = low + rand() % (high - low + 1); //[low,high]
//int x = low + 1 + rand() % (high - low - 1); //(low,high)
cout << x << endl;
}
return 0;
}