###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)