rand()与srand()生成随机数
Description
C / C++ 如何生成随机数?
rand()
rand()函数是以一个数字(我们称之为”种子”seed)为基准,以某个递推公式推算出来的一系列数
我们假设这个公式为 f ( seed ) = [a, b, c …]
试用rand()
#include <ctime>
#include <cstdio>
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
int a;
for(int i = 0; i < 10; ++i)
{
a = rand();
cout << a << '\n';
}
return 0;
}
出现问题
我们多次编译,输出前十个数字发现都是一样的,就是41,18467,6334…
原因:我们不给rand()函数传去种子的时候,种子的默认值为1,意味着
f ( 1 ) = [41, 18467, 6334, 26500…]
但这个集合里的数字很多,一般够用了
如果想要每次产生不一样的随机数,我们要给rand()函数传递种子
srand(seed)
srand == seed + rand
指为rand()函数传递种子,括号里的参数值为种子值
time()
srand()在for循环内外的区别
写着写着突然不想写了,rand()就挺好