###IMPORT### import sys import random ###MAIN### def dice(): return int(random.uniform(0,365)) def main(): trial=1e5 count=[] same=0 N=40 M=3 for day in range(0,365) : count.append(0) for num1 in range(0,int(trial)): for day in range(0,365) : count[day]=0 for num2 in range(0,N) : count[dice()]+=1 for day in range(0,365) : if count[day] > (M-1) : same+=1 break print same/trial main()
2015年7月7日火曜日
N人のクラスで同じ誕生日の人がM人以上いる確率
学生さんのレポートでの質問に答えるために作った。40人クラスで3人以上同じ誕生日の確率は6.7%くらい。
2015年7月1日水曜日
篠本先生のじゃんけんマシン in Python
篠本先生の教科書で昔勉強したパーセプトロンのじゃんけんマシン (ソースはここを参照しました) をPythonで書き直してみた。
もし情報処理の授業を持つ事になったら、Pythonで機械学習とか面白いかと思ったのだが、ハードルが高い (&篠本先生の教科書は既に入手困難) か...。
GUIをつけてみたいところ。
###MAIN### N=5 def perceptron(m,x,w,v): prec=[] if m<=0: return -1 for k in range(0,3) : prec.append(-1) prec[m-1]=1 for k in range(0,3): if prec[k]*v[k]<=0 : for j in range(0,3*N+1) : w[(3*N+1)*k+j]+=prec[k]*x[j] for i in range(0,3*N-3) : x[3*N-1-i]=x[3*N-4-i] for i in range(0,3): x[i]=prec[i] for k in range(0,3): v[k]=0 for k in range(0,3): for j in range(0,3*N+1): v[k]+=w[(3*N+1)*k+j]*x[j] vmax=-1000000 for k in range(0,3) : if v[k] >=vmax : vmax=v[k] kmax=k return kmax+1 def main() : total=0 v=[] fw=[] x=[] w=[] pred=0 for i in range(0,3): v.append(0) fw.append(0) for i in range(0,3*N): x.append(0) x.append(-1) for i in range(0, 9*N+3): w.append(0) print "x:",x print "w:",w print "v:",v m=1 while m>0: pred=perceptron(m,x,w,v) while True: try: m = int(raw_input("1 Gu 2 Choki 3 Pa :")) break except ValueError: print "Try again..." if m>3 : m=3 print "You",m,"vs Machine",(pred+1)%3+1 if pred==m : print "Machine win." fw[0]+=1 elif pred%3==m-1: print "You win" fw[1]+=1 else: print "Draw" fw[2]+=1 total+=1 print "You :",fw[1], "Machine:", fw[0], "Draw :",fw[2],"Total:", total #print "x:",x #print "w:",w #print "v:",v return 0 main()
登録:
投稿 (Atom)