从python的csv文件中的概率生成数字
我有一个具有不同情况的Excel文件和每个案例约75个事件。在每种情况下都有可能发生每个事件。因此,Excel文件看起来是这样的:从python的csv文件中的概率生成数字
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
得到的概率所以看起来你要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()
..........
等等。这不应该要求随机接近多少个呼叫。虽然设置它可能不是微不足道的。
这样做需要很长时间,这不是很实用,就像我使用的方法。我正在寻找一个更简单的方法,不知道是否有一个。 – memokerobi
如果以编程方式生成代码,则不会花太长时间,但这是完全不同的任务。 –
您有75个事件,但76个返回值(0-75);什么是额外的? – Prune
我认为当范围(0,75)不包括75,所以它是75值,0到74 – memokerobi