原理很简单,就是利用程序执行时间的不确定性,那么就无法预测下一次time()
函数的返回值,time()
也不用精确到纳秒级之类的,秒级都行,有人可能会说短期内time()
返回值相同啊,那么短期内温度之类的硬件噪声也可能相同啊,对不对?只要满足无法预测行就行,毕竟真随机的定义就是无法预测。
#include <stdio.h>
#include <time.h>
unsigned truerandom(unsigned max) {
static unsigned sum = 0;
sum += time(NULL);
return sum % max;
}
int main() {
for (int i = 0; i < 1000; i++) {
printf("%u ", truerandom(100));
}
printf("\n");
return 0;
}