我有一个包含不同案例的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获得概率
答案 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()
..........
等等。这不应该要求任何接近随机的呼叫。虽然设置它可能不是微不足道的。