簡體   English   中英

在Python中生成3個不同的隨機數

[英]Generate 3 different random number in Python

我是python的新手。 我想在python3中使用numpy.random.randint在指定范圍內生成3套不同的數字。 (僅供參考->要實施K-Means)

我正在使用此代碼

# Number of clusters
k = 3
# X coordinates of random centroids
C_x = np.random.randint(38.8, 39.4, size=k)
# Y coordinates of random centroids
C_y = np.random.randint(-77.5,-76.5, size=k)
C = np.array(list(zip(C_x, C_y)), dtype=np.float32)
print(C)

但是每次迭代都給我相同的一組值

[[ 38. -77.]
 [ 38. -77.]
 [ 38. -77.]]

我要去哪里錯了?

randint()函數整數進行運算; 您的浮點數必須取整為整數,然后再取隨機值。 由於第二個值是互斥的 ,因此您生成的每個值的范圍僅為一個

為低和高值傳遞整數 (並選擇較大的范圍),或者使用分布函數之一 numpy.random.uniform()函數適合您的需求嗎?

>>> C_x = np.random.uniform(38.8, 39.4, size=k)
>>> C_y = np.random.uniform(-77.5,-76.5, size=k)
>>> np.array(list(zip(C_x, C_y)), dtype=np.float32)
array([[ 39.04865646, -76.83393097],
       [ 39.06672668, -76.70361328],
       [ 39.35120773, -77.00741577]], dtype=float32)

我用了numpy.random.uniform

# Number of clusters
k = 3
# X coordinates of random centroids
C_x = np.random.uniform(38.8, 39.4, size=k)
# Y coordinates of random centroids
C_y = np.random.uniform(-77.5,-76.5, size=k)
C = np.array(list(zip(C_x, C_y)), dtype=np.float32)
print(C)

而且有效。

[[ 38.88471603 -77.37638855]
 [ 38.99485779 -76.99333954]
 [ 38.97389603 -77.27649689]]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM