avatar
fireworks99
keep hungry keep foolish

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;
}

result

出现问题

我们多次编译,输出前十个数字发现都是一样的,就是41,18467,6334…

原因:我们不给rand()函数传去种子的时候,种子的默认值为1,意味着

f ( 1 ) = [41, 18467, 6334, 26500…]

但这个集合里的数字很多,一般够用了

如果想要每次产生不一样的随机数,我们要给rand()函数传递种子

srand(seed)

srand == seed + rand

指为rand()函数传递种子,括号里的参数值为种子值

time()

srand()在for循环内外的区别

写着写着突然不想写了,rand()就挺好

Site by Baole Zhao | Powered by Hexo | theme PreciousJoy