从python中的csv文件中的概率生成数字

时间:2017-05-31 20:44:06

标签: python excel csv probability probability-distribution

我有一个包含不同案例的excel文件,每个案例约有75个事件。在每种情况下,每个事件都有可能发生。所以excel文件看起来像这样:

       event1  event2 ...   event75    

case1  0.0343  0.0234 ...   0.1194

case2  0.0924  0.0532 ...   0.0023

我想在python中生成一个随机数,范围从0到75,具有给定大小写的概率。当我处理只有2个可能发生的事件的案例时,我使用了这样的代码:

excel_cases = pd.read_csv('/.../cases.csv')

def event_probabilities(case):
event_probability = excel_cases.loc[excel_cases['Case'] == case, 'event1'].values[0]
return event_probability

event1_probability = event_probabilities("case1")
np.random.choice(np.arange(1, 3), p=[event1_probability, (1 - event1_probability)])
# can also do an event2_probability instead of 1-event1_probability

然而,当事件范围变大时,我不知道什么是更有效的方法。谢谢你的帮助。

*与其他问题不一样,因为我从Excel获得概率

1 个答案:

答案 0 :(得分:0)

所以看起来你要精确到4位小数吗?所以你能做的就是得到一个0到9999之间的随机数:

from random import randint
randomNum = randint(0,9999))

然后将每个概率乘以10000,并为每个开关设置一堆elif语句。因此,如果event_1的概率为0.0045且事件2的概率为.0100,那么elif看起来就像这样。

if randomNum < 45:
    event_1()
elif randomNum > 45 && randomNum < 145:
    event_2()
..........

等等。这不应该要求任何接近随机的呼叫。虽然设置它可能不是微不足道的。