[英]Generate 100 normally distributed random numbers in Python
我是 Python 的極端初學者,我很難編寫非常簡單的代碼。
我正在嘗試編寫一個簡單的代碼,通過使用期望為 1.0 和標准差為 0.005 的函數 gauss 生成 100 個正態分布數,然后存儲在一個數組中,該數組可用於計算這 100 個樣本的平均值和標准差。
這是我的代碼:
def uniformrandom(n):
i=0
while i< n:
gauss(1.0, 0.005)
i = i + 1
return i
然后我嘗試了
L = uniformrandom(100)
代碼應該在 Python 中縮進,但只是當我輸入 StackOverflow 時,我才真正知道如何縮進它。
假設我使用公式 (x1+x2+...+xn)/100 來獲取平均值,我如何存儲這些數字並使用公式來獲取平均值。
我在 Python 中嘗試了代碼,但 L 只打印值 n。 我的代碼幾乎沒有什么問題,我應該如何修復它。
如果有人可以提供一些幫助,將不勝感激。 非常感謝!
import numpy as np
L =np.random.normal(1.0, 0.005, 100)
在這里您可以找到使用 numpy 進行正態分布的文檔:http: //docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.random.normal.html
然后您可以使用以下方法計算平均值: my_mean_value = np.mean(L)
你必須記住,如果你想打印一些東西,你需要使用print my_mean value
uniformrandom()
沒有返回任何東西。 您需要添加一個return
語句:
def uniformrandom(n):
i=0
while i< n:
gauss(1.0, 0.005)
i = i + 1
return i
不過,那是返回gauss
的數量。 您甚至沒有將gauss()
調用存儲在列表中。 您應該將您的功能更改為:
def uniformrandom(n):
gausses = []
for _ in range(n):
gausses.append(gauss(1.0, 0.005))
return gausses
你甚至可以使用列表推導:
def uniformrandom(n):
return [gauss(1.0, 0.005) for _ in range(n)]
代碼應該在 Python 中縮進,但只是當我輸入 StackOverflow 時,我才真正知道如何縮進它。
您只需使用空格縮進。
我嘗試了 Python 中的代碼,但 L 沒有打印任何內容。
好吧,您的函數沒有return
任何值。 現在編輯您的代碼返回一個整數i
,它將與n
相同。 它仍然沒有返回與您調用的gauss
函數有關的任何內容。
例如,要生成一個合適的數字:
def uniformrandom_1():
return gauss(1.0, 0.005)
現在,如果你想要一個包含n
數字的列表,你可以使用
[uniformrandom_1() for i in range(n)]
或者把它寫成一個函數:
def uniformrandom(n):
return [uniformrandom_1() for i in range(n)]
我如何存儲這些數字並使用公式來獲得平均值
好的,現在我們可以將您的平均公式轉換為
def mean(sample):
return sum(sample)/len(sample)
L = uniformrandom(100)
LMean = mean(L)
試試下面的代碼,
def uniformrandom(n):
nums=[]
total=0
i=0
for i in range(1, n):
num=gauss(1.0, 0.005)
nums.append( num )
total +=num
return (nums,total/n)
返回生成的數字和平均值
這將使用高斯創建一個包含 n 個隨機數的列表。 將隨機導入為 rd
def uniformrandom(n):
i=0
random_list=[]*n
for i in range(n):
random_list+=[rd.gauss(1, 0.005)]
return random_list
要獲得平均值,只需使用mean=sum(random_list)/n
為了在 Python 中使用函數 gauss 生成 100 個正態分布的隨機數,期望值為 1.0,標准差為 0.005,可以使用numpy.random.normal
如下
import numpy as np
random_numbers = np.random.normal(1.0, 0.005, 100)
為了將random_numbers
存儲在一個數組中,可以使用numpy.array
執行此操作,如下所示
random_numbers_array = np.array(random_numbers)
然后使用numpy.mean
計算平均值
mean = np.mean(random_numbers_array)
並計算標准偏差使用numpy.std
如下
std = np.std(random_numbers_array)
一個函數,將隨機數生成器的均值和標准差作為輸入,並執行 OP 想要的操作,可以類似於
def uniformrandom(mean, std):
random_numbers = np.random.normal(mean, std, 100)
random_numbers_array = np.array(random_numbers)
mean = np.mean(random_numbers_array)
std = np.std(random_numbers_array)
return random_numbers_array, mean, std
讓我們看看它檢索到什么
print(uniformrandom(1.0, 0.005))
[Out]:
(array([1.00716042, 0.99938042, 0.99178698, 1.00791888, 1.00623344,
1.00555578, 0.99890757, 1.00695046, 0.98482516, 0.9928371 ,
1.00016377, 0.99510195, 1.00280951, 0.99472607, 0.99453582,
1.00791222, 1.00302319, 1.00004503, 0.99884054, 1.00429994,
0.99591756, 1.010769 , 1.00827643, 0.996754 , 0.99236853,
1.00096622, 1.00092158, 1.00192217, 1.00148108, 0.9975529 ,
1.00953799, 1.0073464 , 0.99942883, 1.0065139 , 1.00265884,
1.00885268, 0.99613224, 1.00299541, 0.99977556, 1.01090735,
1.00132776, 0.99711267, 1.00129545, 1.00500702, 0.99937595,
1.00603761, 0.98960716, 0.99932355, 0.99687272, 1.00332839,
0.991147 , 0.99643908, 0.99279811, 1.00112179, 1.00012058,
0.9989405 , 1.00150169, 1.00683601, 0.99885708, 0.99632519,
1.00112315, 0.99280336, 1.00759542, 1.00140661, 1.00183764,
0.99540866, 1.0002343 , 0.99421579, 1.01169739, 1.00330142,
0.99977923, 1.00365608, 0.9984007 , 1.00106568, 1.00349778,
0.99527499, 0.99189253, 0.99477082, 0.99486919, 0.99784054,
0.99240925, 1.00417557, 0.99566904, 1.00355492, 0.99717846,
0.99910477, 0.99718301, 1.00711659, 0.99623698, 1.00143697,
1.00876763, 1.0049953 , 0.99885742, 0.99498201, 1.00324752,
0.99907905, 0.99762597, 0.99502917, 0.99511507, 1.00991401]), 1.0002981820807302, 0.005332038881947385)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.