2016-07-24 57 views
-5

我不确定,特别是最后一行的功能。我在Python书中看到它。以下Python代码有什么作用?

from random import randint 
random_bits = 0 
for i in range(64): 
    if randint(0, 1): 
     random_bits |= 1 << i 
+2

您是否尝试过运行它?阅读有关这些功能和操作员的文档?你究竟明白了什么?只要阅读所涉及事物的名称,就可以让你对发生的事情有一个合理的理解;它产生64个随机比特。 – jonrsharpe

+2

我发现很难想象这本书提供了这个代码没有任何解释或任何目的声明。 –

+0

http://stackoverflow.com/questions/14295469/what-does-mean-pipe-equal-operator –

回答

2

您这里有2个特殊运营商:

  1. x << y其转移二进制的x通过y地方
  2. x |= y里面做代表binaric或xy之间和结果存储在x

有了这些知识,你可以看到你的代码产生一个随机的64位数字。在每次迭代时,它将以50%的概率打开i'th位。

1

从文档:

X < <Ÿ 返回与比特×转移到由y名额留给(新位的右手边是零)。这是同乘以×2 **Ÿ

我觉得剩下的应该是从变量的命名琐碎