Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用python从csv文件中的概率生成数字_Python_Excel_Csv_Probability_Probability Distribution - Fatal编程技术网

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

用python从csv文件中的概率生成数字,python,excel,csv,probability,probability-distribution,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 excel_cases = pd.read_csv('/.../cases.csv') def event_probabilities

我有一个excel文件,里面有不同的案例,每个案例大约有75个事件。考虑到每种情况,每个事件都有发生的概率。因此excel文件如下所示:

       event1  event2 ...   event75    

case1  0.0343  0.0234 ...   0.1194

case2  0.0924  0.0532 ...   0.0023
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
我想在python中生成一个随机数,范围从0到75,概率为给定情况。当我处理可能只发生2个事件的案例时,我使用了如下代码:

       event1  event2 ...   event75    

case1  0.0343  0.0234 ...   0.1194

case2  0.0924  0.0532 ...   0.0023
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语句。因此,如果事件1的概率为0.0045,事件2的概率为0.0100,则elif将如下所示

if randomNum < 45:
    event_1()
elif randomNum > 45 && randomNum < 145:
    event_2()
..........
如果randomNum<45:
事件1()
elif randomNum>45&&randomNum<145:
事件2()
..........

等等。这不需要对random进行如此多的调用。尽管设置它可能不是一件小事

您有75个事件,但有76个返回值(0-75);额外的一个是什么?我想当范围(0,75)不包括75,所以它是75个值,0到74,这样做需要很长时间,这不是很实用,就像我使用的方法一样。我正在寻找一种更简单的方法,不知道是否有。如果以编程方式生成代码不会花费太长时间,但这是一个完全不同的任务。