2017-05-31 28 views
0

私は、異なるケースとそれぞれのケースについて約75イベントのExcelファイルを持っています。それぞれのケースで、各イベントが発生する可能性があります。だから、Excelファイルは、次のようになりますPythonでcsvファイルの確率から数値を生成する

 event1 event2 ... event75  

case1 0.0343 0.0234 ... 0.1194 

case2 0.0924 0.0532 ... 0.0023 

私は与えられた例の確率で0から75までの範囲のpythonで乱数を生成します。私が発生する可能性がある唯一の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 

は、しかし、私はこれを行うためのより効率的な方法だろうかわかりません。助けてくれてありがとう。あなたは精密右の4つの小数しようとしているよう

私はエクセル

+1

イベントは75回ですが、戻り値は76(0-75)です。余分なものは何ですか? – Prune

+0

範囲(0,75)に75が含まれていないので75値、0〜74だと思いました – memokerobi

答えて

0

から確率を得ているように、他の質問など*同じではありませんので、それが見えますか?

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

そして10000によって各確率を乗算し、各スイッチのELIF文の束を設定:だから何を行う可能性は0と9999の間の乱数を取得することです。したがって、event_1の確率が0.0045でイベント2の確率が.100の場合、elifは次のようになります。

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

などとなる。これは、ランダムに多くの呼び出しを行う場所の近くでは必要ありません。それを設定することは自明ではないかもしれません。

+0

これを行うには長い時間がかかります。私はもっ​​と簡単な方法を探していますが、それがあるかどうかわかりません。 – memokerobi

+0

コードをプログラムで生成した場合、時間がかかりすぎることはありませんが、それはまったく別のタスクです。 –

関連する問題