gpt4 book ai didi

c - C 问题中的新手随机数生成器?

转载 作者:行者123 更新时间:2023-12-02 06:22:27 25 4
gpt4 key购买 nike

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

int main(int argc, const char *argv[]) {
srand(clock());
int num = rand() % 6 + 1;

printf("%i", num);
return 0;
}

我在“srand(clock());”中收到此警告线。

警告:隐式转换会丢失整数精度:“clock_t”(又名“unsigned long”)到“unsigned int”

我该如何解决?谢谢!

最佳答案

Don't use srand(clock()) use srand((unsigned)time(NULL)) instead .

更好的种子:

  • 使用 time(NULL) 获取一天中的时间并将结果转换为种子srand()。

  • time(NULL) 返回自午夜以来经过的秒数1970 年 1 月 1 日。

  • 使用 rdtsc() 获取 CPU 时间戳并将结果转换为种子斯兰德()。 rdtsc() 不太可能返回重复值,因为它返回指令数
    自启动以来由处理器执行。

您还应该在 US-CERT Secure Coding on how properly seed 阅读这篇文章.

关于c - C 问题中的新手随机数生成器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6864308/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com