本文共 940 字,大约阅读时间需要 3 分钟。
很多朋友经常用srand/rand产生随机数, 其实这种随机性并不好, 容易遭受攻击(很多时候, 也满足不了需求)。 在本文中, 我们来简要介绍一下利用linux的/dev/urandom文件产生较好的随机数, 直接上代码吧:
#include #include int main(){ int randNum = 0; int fd = open("/dev/urandom", O_RDONLY); if(-1 == fd) { printf("error\n"); return 1; } read(fd, (char *)&randNum, sizeof(int)); close(fd); // 千千万万不要漏, 我曾漏过, 结果好悲剧 printf("randNum is %d\n", randNum); return 0;}
结果:
[taoge@localhost learn_c]$ ./a.out
randNum is -1061686095
[taoge@localhost learn_c]$ ./a.out
randNum is 1768060870
[taoge@localhost learn_c]$ ./a.out
randNum is -1313095365
[taoge@localhost learn_c]$ ./a.out
randNum is -1651791231
[taoge@localhost learn_c]$ ./a.out
randNum is 932742445
[taoge@localhost learn_c]$ ./a.out
randNum is 1191576271
[taoge@localhost learn_c]$
除了/dev/urandom还, 实际上还有一个/dev/random, 两者是有一些小区别的, 有兴趣的话, 大家可以在网上搜索并了解一下, 我就不再重复啰嗦了。
转载地址:http://rfgvi.baihongyu.com/