我正在嘗試創建一個回圈,該回圈接受一個輸入值,并在 0 到 10 之間創建許多亂數,然后將這些值通過公式放入一個回圈中,并將這些值保存到一個陣列中。以下是我所做的:
def f(x):
x**2
def Sample(npts):
sample = []
randomlist = random.sample(range(0.0, 10.0), npts)
for i in range(randomlist):
y = f(randomlist)
sample.append(y)
print(sample)
現在在這里我收到一個錯誤,說超出了樣本范圍。當我設定 npts = 100 時會發生這種情況,有人可以解釋我哪里出錯了嗎?另外,我擔心我稍后可能會呼叫錯誤的值。所以為了解釋一下,我試圖在 0 和 10 之間獲得 100 個隨機值(在這種情況下為 npts),這些值是通過 f(x) 的 x 值,(在這種情況下,這些值乘以 2 ),然后每次將這些新的計算值保存到陣列樣本中,然后在最后列印。
希望這能說明我想要做的事情,所以請讓我知道如何修復錯誤!
uj5u.com熱心網友回復:
來自random.sample檔案:https :
//docs.python.org/3/library/random.html#random.sample
回傳從種群序列或集合中選擇的唯一元素的 ak 長度串列。用于不放回隨機抽樣。
您正在從 10 個專案中選擇 100 個專案而沒有替換,因此出現錯誤。
如果您想替換采樣,請使用random.choices:https :
//docs.python.org/3/library/random.html#random.choices
回傳從具有替換的總體中選擇的 ak 大小的元素串列。如果人口為空,則引發 IndexError。
uj5u.com熱心網友回復:
研究這個。
import random
def f(x):
return x**2
def Sample(npts):
sample = []
# Generate random numbers from 0 to 10.
randomlist = []
for _ in range(npts): # just counting from 0 to npts
r = random.randint(0, 10) # returns integer value randomly in the range [0, 10]
randomlist.append(r) # save to a list
# Save result of function f
for v in randomlist: # get each item in the list
y = f(v)
sample.append(y)
return sample
# start
npts = 100
result = Sample(npts)
print(f'result length: {len(result)}')
print(f'result: {result}')
輸出
result length: 100
result: [4, 16, 1, 49, 100, 16, 4, 81, 81, ...
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/362843.html
上一篇:用x模式填充方陣
下一篇:如何更改z3py否定不等式的符號
