![](/img/trans.png)
[英]Is there a Python random.random() analog that does not generate 0
[英]What does random.Random (not random.random) from the random module actually do in Python?
我想對random.Random函數/類的實際作用有一個清晰的解釋。 這就是Python的random模塊必須說的。
綁定模塊函數使用的隨機數生成器基類。 用於實例化Random實例以獲取不共享狀態的生成器。 對於多線程程序尤其有用,它為每個線程創建一個不同的Random實例,並使用jumpahead()方法來確保每個線程看到的生成序列不會重疊。
如果要使用自己設計的其他基本生成器,還可以將Random類作為子類:在這種情況下,請重寫以下方法:random(),seed(),getstate(),setstate()和jumpahead()。 (可選)實現getrandbits()方法,以便randrange()可以覆蓋任意大范圍。
我不明白這一點,因為我仍然是Python的初學者。 我確實對基類和派生類有所了解,這顯然與此有關。
我嘗試使用Python的IDLE中的random.Random()函數/類,發現了以下內容。
我希望我可以對random.Random進行簡單的解釋,並解釋為什么它僅返回兩個值。 (我是一個初學者,所以請原諒我對此主題的無知!)
歡迎對諸如seed(),getstate(),setstate()和jumpahead()之類的函數如何工作的任何解釋,或對解釋如此的任何文檔/書籍的引用。
簡而言之, random.Random()
創建一個偽隨機數生成器,即一個對象,該對象生成一個看起來隨機的數字序列(都是pseudorandom )。
random.Random()
接受一個對象,該對象可以是“字符串”,“ int”(整數)或“ float”(整數或非整數,例如3.2或888)。 該對象稱為種子 ,它可以用於創建一個生成特定序列的偽隨機數的對象。 例如,您可以致電-
random.Random(57)
, random.Random(888.6)
, random.Random("Hello World")
,或 random.Random(99898989)
, 獲得特定偽隨機數序列的生成器。 但是,只有在程序中需要可重復的“隨機性”時,才應指定種子 。
然后,您可以使用此生成器從該序列中提取偽隨機數:
# Create a generator without
# a seed, so that the pseudorandom
# sequence will almost surely differ
# from run to run
randomGen = random.Random()
# Generate a number in [0, 1)
number = randomGen.random()
# Generate an integer in [0, 5]
number = randomGen.randint(0, 5)
注意,該示例將生成器從random.Random
分配給名為randomGen
的變量; 通常,僅創建生成器本身並沒有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.