当前位置: 首页 > 知识库问答 >
问题:

从dev/urandom获取真正随机的数据

洪高刚
2023-03-14
int myFile = open("/dev/urandom", O_RDONLY);
begin outer loop
for (ii = 0 ; ii<12 ; ii++ )
    {
            read(myFile, &rand, 2) ;
            printf("%d " , (int) rand) ;
    }

在FreeBSD 10.3和Solaris 11上测试

14315 18369 22645 5910 55240 17092 32556 55028 34376 34902 44236 56796
15767 54265 22372 38639 44446 25037 58094 28251 65329 48865 28057 59835
17135 57009 5612 8627 55111 365 9988 62402 42682 57066 59920 10659
21386 60845 9243 27377 18829 10162 64795 55836 53913 39765 51749 47917
21522 30166 44059 30351 15622 17957 43399 26184 44558 4553 41745 54603
2179 11970 21234 39538 45359 50854 58277 62479 4172 14207 20551 54455
27120 22497 51021 41488 51668 50638 13894 37707 19813 40971 52191 27702
29443 20239 59131 12186 24974 55298 56381 50092 11114 55533 11428 17223
30520 32207 42256 31605 32485 3700 47741 25023 50723 64056 44451 25864
30557 2136 55462 20308 35902 30238 21815 9255 48414 1956 27819 49185
34428 59204 1955 10782 20077 59336 27867 29254 46219 28142 19108 52866
39392 30683 40700 11760 7835 65096 22363 41318 9363 39016 34225 20539
39956 47480 12499 49225 15360 18322 38157 61226 43010 39099 9631 49289
40243 53645 10750 40712 32496 53093 2925 36166 60770 45263 30683 2537
41922 56658 30762 49046 64446 11102 53481 43032 11576 31789 17015 47093
44196 65248 30185 28250 27134 56704 42954 18203 36677 21296 22780 27224
50771 19717 34434 16434 43648 57975 64581 51131 748 21266 26116 29653
52032 13956 15378 8284 47951 24566 58583 61174 53515 1697 8710 46559
54603 54603 54603 54603 54603 54603 54603 54603 54603 54603 54603 54603
54603 54603 54603 54603 54603 54603 54603 54603 54603 54603 54603 54603
54603 54603 54603 54603 54603 54603 54603 54603 54603 54603 54603 54603
55683 26712 63891 36499 40089 58448 32114 14948 57516 35102 23239 45829
62055 29107 10766 37551 30467 33145 4124 46208 60329 54800 29127 53398
62990 41904 30506 58700 13996 24915 18279 54703 8346 29550 2794 19473
64367 38250 23821 41639 16940 5076 26526 26796 23550 58420 10689 18614
7471 34008 62429 27549 53162 37714 26394 37498 14193 15684 31649 31621
7614 16389 59721 27793 58153 9808 61092 15071 42413 57890 33708 5530

共有1个答案

吕永嘉
2023-03-14

我是不是做错什么了?

是的,code正在使用rand,而没有首先检查read(myFile,&rand,2)的返回值。

代码在读取时遇到问题,因此检查read()的返回值。

if (read(myFile, &rand, 2) != 2) Handle_It();
else printf("%d " , (int) rand) ;
 类似资料:
  • 问题内容: 例如,可以将其用于生成一次性填充密钥吗? 另外,它的来源是什么,如何将其用于生成 x 和 y 之间的随机数? 问题答案: 在这个宇宙中,唯一可以真正考虑的是基于量子效应的宇宙。常见的例子是放射性衰变。对于某些原子,您只能确定其半衰期,但不能确定下一个原子核会破裂。 关于-取决于实现。在Linux中,它用作熵源: Linux内核根据键盘时序,鼠标移动和IDE时序生成熵,并通过特殊文件/

  • 问题内容: 我有一个生成事实的简单应用。我想合并一个生成随机事实而不是递减的函数。 我的数组看起来像这样。 问题答案: 使用随机类。该类有一个方法,(doc)和引号: 返回一个伪随机数,它从此随机数生成器的序列中提取,在0(含)和指定值(不含)之间均匀分布的int值。nextInt的一般约定是伪随机生成并返回指定范围内的一个int值。所有n个可能的int值均以(近似)相等的概率产生。 因此,您需要

  • 问题内容: 考虑: 如何使用JavaScript从此数组中选择随机值? 问题答案: 这是一个简单的单线 例

  • 问题内容: $items = Array(523,3452,334,31,…5346); 此数组的每个项目都是一个数字。 如何获得随机物品? 问题答案: echo $items[array_rand($items)]; array_rand()

  • 问题内容: 我一直在阅读,据我所知,我利用网络数据包定时等事件创建了密码随机数。但是,我是否理解使用PRNG并从中植入数字的权利?还是只要有一点就使用它- 当它们用完时会回落到PRNG并从哪里收集种子? 问题答案: 从联机帮助页: 随机数发生器将来自设备驱动程序和其他来源的环境噪声收集到一个熵池中。发生器还保持熵池中噪声位数的估计。根据该熵池,创建随机数。 读取时,/ dev / random设备

  • 我正在尝试模拟我在上面发现的数学难题http://blog.xkcd.com/2010/02/09/math-puzzle/.然而,java random类返回了奇怪的结果。在下面的代码中,结果是预期的。第一行的输出大约为.612,第二行的输出介于.49和.51之间。int试验=10000000;int成功=0; 然而,当我切换 到 第一个数字的输出约为 .476,第二个数字的输出约为 .710。