c++ - 为什么在 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 - 如何知道在 C 中转换为 void 指针的结构大小?
- javascript - ng-html-bind 用于包含复选框的标签
- javascript - Angular - 如何在加载和保存时禁用/灰显屏幕
- iphone - Xcode 9 中 iPhone 模拟器的截屏视频
- google-chrome-extension - Chrome扩展,如何忽略node_modules在开发中加载更快
- javascript - 为什么按钮禁用后无法重新启用?
- image - 引导图像被切断
- angular - 如何在我的小写模型中处理大写 JSON 字段名称
- ios - ld:找不到框架 FirebaseNanoPB
- opencv - K-means++ 需要 OpenCV,尽管它已安装