如果获得国家列表及其相应的人口,请编写一个函数,该函数将返回一个随机国家,但该国家的人口越高,被随机抽取的可能性就越大。
import numpy as np
def randomCountry(countries, pop):
countries = ["CUBA", "Spain", "USA","Belgium"]
#Population in millions
pop = [54,32,300,75]
probabilities = pop/np.sum(pop)
# Get the indices of the sorted probabilities
idx_sort = np.argsort(probabilities)
probabilities = probabilities[idx_sort]
countries = countries[idx_sort]
rand = np.random.choice(countries, p = np.array(pop) / np.sum(pop))
summ = 0
i = 0
while(summ <= rand):
summ = summ + probabilities[i]
i = i + 1
return countries[i-1]
我不确定我要去哪里哪里
答案 0 :(得分:2)
相反,您可以使用np.random.choice
,并使用参数p
来定义基于人口选择国家的可能性。
示例:
countries = ['A', 'B', 'C']
populations = [100, 25, 12]
np.random.choice(countries, p = populations / np.sum(populations))
说明:
p
是选择给定国家/地区的可能性。因此,使用populations / np.sum(populations)
(结果为array([ 0.72992701, 0.18248175, 0.08759124])
),您的意思是:72%的时间选择A
国家,18%的时间选择B
,{{1 }} 8%的时间。