Python3.3中如何產生偽隨機數


python3.3的random模塊實現各種分布下的偽隨機數生成。

對整數而言,可以在一個范圍內按均勻分布來隨機選擇。對序列來說,同樣可以按照均勻分布來選擇一個元素,可以對數組產生隨機排列,也可以進行隨機的不重復采樣。

對隨機實數而言,提供均勻,正態(高斯),對數正態,負指數,γ和β等多種分布。甚至角分布和馮·米塞斯分布(循環正態分布),簡要示例如下:

 1 # coding=utf-8
 2 __author__ = 'hillfree'
 3 
 4 import random
 5 
 6 
 7 def testRand():
 8 
 9     # 在[a, b]之間產生隨機整數 random.randint(a, b)
10     for i in range(5):
11         ret = random.randint(100, 999)
12         print("random.randint(100, 999) = {0}".format(ret,))
13 
14     # 在[a, b]之間產生隨機浮點數 random.uniform(a, b)
15     for i in range(5):
16         ret = random.uniform(1.0, 100.0)
17         print("random.uniform(1.0, 100.0) = {0}".format(ret,))
18 
19     # 在[0.0, 1.0)之間產生隨機浮點數 random.random()
20     for i in range(5):
21         ret = random.random()
22         print("random.random() = {0}".format(ret,))
23 
24     # 在樣本population中隨機選擇k個 random.sample(population, k)
25     population = {"Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun" }
26     for i in range(5):
27         ret = random.sample(population, 3)
28         print("random.sample(population, 3) = {0}".format(ret,))
29 
30     # 在序列seq中隨機選擇1個 random.choice(seq)
31     seq = ("to", "be", "or", "not", 'tobe', 'is', 'a', 'question')
32     for i in range(5):
33         ret = random.choice(seq)
34         print("random.choice(seq) = {0}".format(ret,))
35 
36     # 從序列中隨機獲取指定長度的片斷。不修改原有序列。
37     # random.sample(sequence, k)
38     sentence = "to be or not to be is a question"
39     for i in range(5):
40         ret = random.sample(sentence, 5)
41         print("random.sample(sentence, 5) = {0}".format(ret,))
42 
43     # 三角分布的隨機數 random.triangular(low, high, mode)
44     for i in range(5):
45         ret = random.triangular(0, 100, 10)
46         print(" random.triangular(0, 100, 10) = {0}".format(ret,))
47 
48     # 高斯分布的隨機數(稍快) random.gauss(mu, sigma)
49     for i in range(5):
50         ret = random.gauss(0, 1)
51         print(" random.gauss(0, 1) = {0}".format(ret,))
52 
53     # beta β分布的隨機數 random.betavariate(alpha, beta)
54 
55     # 指數分布的隨機數 random.expovariate(lambd)
56 
57     # 伽馬分布的隨機數 random.gammavariate(alpha, beta)
58 
59     # 對數正態分布的隨機數 random.lognormvariate(mu, sigma)
60 
61     # 正態分布的隨機數 random.normalvariate(mu, sigma)
62 
63     # 馮米塞斯分布的隨機數 random.vonmisesvariate(mu, kappa)
64 
65     # 帕累托分布的隨機數 random.paretovariate(alpha)
66 
67     # 韋伯分布的隨機數 random.weibullvariate(alpha, beta)
68 
69 
70 if __name__ == "__main__" :
71     testRand()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM