1.rand()函数
c++库中提供rand()函数,每次调用后返回一个非负整数值,程序中包含的头文件为cstdlib。但是,该函数返回的数字是伪随机数。因为rand()函数采用线性同余法实现,生成的数并不是真正意义上的随机数,每次运行都会产生相同的数字流。
示例
1 2 3 4 5 6 7 8 9 10
| #include<iostream> #include <cstdlib> using namespace std; int main() { int num = 0; num = rand() % 100 + 1; cout << num << endl; return 0; }
|
2.srand()函数
要在每次运行产生不同的随机数字流,则必须为随机数生成器提供一个种子。c++中通过调用srand函数实现。在rand函数调用之前,srand要先调用一次,并且在整个程序中仅调用一次。
示例一
这种用法需要用户输入种子值,当值不同时产生的随机数不同,若再次使用同样的种子值时,也会产生相同的随机数字。
1 2 3 4 5 6 7 8 9 10 11 12 13
| #include<iostream> #include <cstdlib> using namespace std; int main() { int num = 0; unsigned int seed; cout << "请输入种子值:"; cin >> seed; srand(seed); num = rand() % 100 + 1; cout << num << endl; return 0; }
|
示例二
获取种子值的另一种方法:调用time函数,它是c++标准库中的一部分。time函数返回从1970年1月1日午夜开始到现在逝去的秒数,因此在每次运行时都会产生不同的种子值。程序中包含的头文件为ctime。
1 2 3 4 5 6 7 8 9 10 11 12
| #include<iostream> #include<ctime> #include <cstdlib> using namespace std; int main() { int num = 0; srand((unsigned int)time(0)); num = rand() % 100 + 1; cout << num << endl; return 0; }
|