2016-07-24 59 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 **Ÿ

我覺得剩下的應該是從變量的命名瑣碎