# -*- coding: UTF-8 -*- from math import * import numpy as np ########################################## # 一様分布の計算(P(X = x), P(X < x)) # x : データ # a,b : 区間 # pr : P(X = x) # return : P(X < x) ########################################## def uniform(x, a, b, pr) : f = 0.0 if x < a : pr[0] = 0.0 f = 0.0 elif x > b : pr[0] = 0.0 f = 1.0 else : y = 1.0 / (b - a) pr[0] = y f = y * (x - a) return f ---------------------------------- # -*- coding: UTF-8 -*- import numpy as np import sys from math import * from function import uniform ########################################## # 一様分布の計算 # coded by Y.Suganuma ########################################## s = input("下限(a)は? ") a = float(s) s = input("上限(b)は? ") b = float(s) print("目的とする結果は? ") print(" =0 : 確率の計算( P(X = x) 及び P(X < x) の値)") s = input(" =1 : p%値( P(X > u) = 0.01p となるuの値) ") sw = int(s) pr = np.empty(1, np.float) if sw == 0 : s = input("グラフ出力?(=1: yes, =0: no) ") sw = int(s) if sw == 0 : # 密度関数と分布関数の値 s = input(" データは? ") x = float(s) f = uniform(x, a, b, pr) print("P(X = " + str(x) + ") = " + str(pr[0]) + ", P( X < " + str(x) + ") = " + str(f) + " (区間 [" + str(a) + ", " + str(b) + "])") # グラフ出力 else : file1 = input(" 密度関数のファイル名は? ") file2 = input(" 分布関数のファイル名は? ") s = input(" データの上限は? ") up = int(s) s = input(" 刻み幅は? ") h = float(s) out1 = open(file1, "w") out2 = open(file2, "w") x = a while x < b+0.5*h : if x > b-0.5*h and x < b+0.5*h : x = b f = uniform(x, a, b, pr) out1.write(str(x) + " " + str(pr[0]) + "\n") out2.write(str(x) + " " + str(f) + "\n") x += h out1.close() out2.close() # %値 else : s = input("%の値は? ") x = float(s) p = 0.01 * x f = b - p * (b - a) print(str(x) + "%値 = " + str(f) + " (区間 [" + str(a) + ", " + str(b) + "])")