#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/