#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;
}
Run Code Online (Sandbox Code Playgroud)
我在"srand(clock())中得到了这个警告;" 线.
警告:隐式转换失去整数精度:'clock_t'(又名'unsigned long')到'unsigned int'
我如何解决它?谢谢!
小智 8
不要使用srand(clock())而是使用srand((无符号)时间(NULL)).
更好的种子:
使用time(NULL)获取一天中的时间并将结果转换为种子srand().
time(NULL)返回自1970年1月1日午夜以来经过的秒数.
使用rdtsc()获取CPU时间戳并将结果转换为种子srand().rdtsc()不太可能返回重复值,因为它返回
自启动以来处理器执行的指令数.
您还应该阅读US-CERT 安全编码中的这篇文章,了解如何正确播种.