国家和人口

时间:2018-08-02 23:42:25

标签: python

如果获得国家列表及其相应的人口,请编写一个函数,该函数将返回一个随机国家,但该国家的人口越高,被随机抽取的可能性就越大。

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]

我不确定我要去哪里哪里

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%的时间。