Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 比较随机和随机_Python_Linux_Random - Fatal编程技术网

Python 比较随机和随机

Python 比较随机和随机,python,linux,random,Python,Linux,Random,有人问我: 使用raspberry pi编写一个python脚本来确定随机性 属于/dev/random和/dev/urandom。读取字节并对结果进行直方图分析。 在matplotlib中绘图。您的答案包括python脚本 我现在对“决定随机性”这句话感到迷茫 我可以从urandom和random阅读: #rb - reading as binary devrndm = open("/dev/random", 'rb') #read to a file instead of mem? rndm

有人问我:

使用raspberry pi编写一个python脚本来确定随机性 属于/dev/random和/dev/urandom。读取字节并对结果进行直方图分析。 在matplotlib中绘图。您的答案包括python脚本

我现在对“决定随机性”这句话感到迷茫

我可以从urandom和random阅读:

#rb - reading as binary
devrndm = open("/dev/random", 'rb')
#read to a file instead of mem?
rndmdata = devrndm.read(25) #read 25bytes

我认为这个练习的目的是发现urandom比random更快,拥有更大的池。然而,如果我试图阅读任何超过15分钟的东西,阅读时间似乎会成倍增加


所以我现在不知道如何比较“随机性”。如果我把Uradom和random都读到各自的文件中,我如何比较它们呢?

你的经历可能正是他们想要的。从urandom(4)的手册页:

读取时,/dev/random设备将只返回 噪声估计位数内的随机字节 在熵池中/dev/random应该适合需要非常高质量随机性的使用,例如 一次性生成键盘或密钥。当熵池为空时,从/dev/random读取的数据将被阻止,直到添加 收集了大量的环境噪声

从/dev/uradom设备读取数据不会阻塞等待更多信息


注意关于阻塞的一点。天王星不会,随机的会。特别是在嵌入式环境中,可能很难获得额外的熵,这将导致您看到的阻塞

你的经历可能正是他们想要的。从urandom(4)的手册页:

读取时,/dev/random设备将只返回 噪声估计位数内的随机字节 在熵池中/dev/random应该适合需要非常高质量随机性的使用,例如 一次性生成键盘或密钥。当熵池为空时,从/dev/random读取的数据将被阻止,直到添加 收集了大量的环境噪声

从/dev/uradom设备读取数据不会阻塞等待更多信息


注意关于阻塞的一点。天王星不会,随机的会。特别是在嵌入式环境中,可能很难获得额外的熵,这将导致您看到的阻塞

可以简单到:

In [664]: f = open("/dev/random", "rb")
In [665]: len(set(f.read(256)))
Out[665]: 169


In [666]: ff = open("/dev/urandom", "rb")
In [667]: len(set(ff.read(256)))
Out[667]: 167


In [669]: len(set(f.read(512)))
Out[669]: 218

In [670]: len(set(ff.read(512)))
Out[670]: 224

即,请求256字节不会返回256个唯一值。因此,您可以根据唯一计数绘制不断增加的样本大小,直到其达到256饱和点。

可以简单到:

In [664]: f = open("/dev/random", "rb")
In [665]: len(set(f.read(256)))
Out[665]: 169


In [666]: ff = open("/dev/urandom", "rb")
In [667]: len(set(ff.read(256)))
Out[667]: 167


In [669]: len(set(f.read(512)))
Out[669]: 218

In [670]: len(set(ff.read(512)))
Out[670]: 224

即,请求256字节不会返回256个唯一值。因此,您可以根据唯一计数绘制不断增加的样本大小,直到其达到256饱和点。

以下内容以及其中的链接可能是一个好的开始:我认为它们的意思是“读取字节和结果直方图。在matplotlib中绘制。”.虽然均匀分布并不意味着随机性。除非在引导过程中很早就看到差异。看见还可以通过使用带有jitterentropy源的rngd尽早添加更多熵。它已经在Fedora和RHEL/CentOS。不确定其他发行版。以下内容和其中的链接可能是一个好的开始:我认为它们的意思是“读取字节和结果直方图。在matplotlib中绘图”。虽然统一发行并不意味着随机性。除非在引导过程中很早就看到差异。看见还可以通过使用带有jitterentropy源的rngd尽早添加更多熵。它已经在Fedora和RHEL/CentOS。对其他发行版不太确定。除了可以添加手动熵和环境噪声之外,这里还可以找到大量信息:问题是输出的质量,而不是阻塞或时间。它确实询问阅读时间,这就是我的回答。除了可以添加手动熵和环境噪声这一事实之外,这里还可以找到大量信息:问题是关于输出的质量,而不是阻塞或时间。它确实询问了阅读时间的增加,这就是我的回答。