首页 > 解决方案 > 为什么在 srand 中使用“时间”?

问题描述

我喜欢通过乱搞代码来学习,最近我复制并粘贴了一个随机数生成器代码。然后我删除了所有不是“必要”的代码行,以使可执行文件能够生成一个随机数。最后一根稻草是我从 srand 中删除“时间”。

srand((无符号)时间(0));

这里的“时间(0)”有什么意义?

它是否使用程序打开的时间来生成随机数的种子?这就是为什么删除它(时间)使它不起作用的原因吗?因为那它没有种子?

还...

include <stdlib.h> 
include <stdio.h> 
include <time.h>

int main() 
{

srand((unsigned) time(0));

printf("Your dice has been rolled! You got:");

int result = 1 + (rand() % 20);

printf("%d", result);

}

这就是整个代码,我注意到它使用“rand”结果进行输出。“rand”是否从“srand”中拉出种子?

标签: c++srand

解决方案


如果您不“播种”随机数生成器(或者如果您使用相同的种子值),您将获得相同的伪随机数集。

使用当前时间是每次获得不同种子的简单方法。


推荐阅读