srand函数如何与时间函数相互作用?

Yel*_*aYR 1 c++ random int time seed

我很困惑 - 我有以下代码 - 最小值和最大值是我们的范围值.据我所知,srand函数接受一个值 - 种子值并返回一个伪随机整数.首先什么是伪随机整数?

// Constants
const int MIN = 50;
const int MAX = 450;

// Get the system time.
unsigned seed = time(0);

// Seed the random number generator.
srand(seed);

// Generate two random numbers.
int num1 = MIN + rand() % MAX;
int num2 = MIN + rand() % MAX;
Run Code Online (Sandbox Code Playgroud)

我们还需要初始化时间值吗?我们可以简单地调用时间函数吗?我相信时间函数会返回类似于秒的部分 - 创建随机#?我一般都很困惑如何生成随机#.

谢谢

Ash*_*ynd 5

"伪随机整数"意味着它是从函数生成的(理论上它是可预测的)但是要区分输出和真正的随机值并不容易(例如,如果猴子使用其中一个数字从袋子里拿出0-9然后把它扔回去).当然,取决于伪随机函数的好坏程度.rand()顺便提一句,标准C/C++ 对于"严重"加密的东西还不够好.

如果不srand使用种子进行初始化,则始终会从数字生成器获得相同的输出值序列.使用时间值是因为假设"部分秒"部分将是相对随机的(并且获得它相对便宜).