仮説検定の話のついでに提供した珈琲豆の話。 ドンガバチョの「製品ホゲーX」のシムは挫折?したので、せめてこちらの方を。 では問題
問題は毎回同じブレンドの珈琲を飲んでいると言えるか?です。あるいは,毎回同じブレンドの珈琲を飲もうと思えば、どの程度の数の豆を一度に挽けば良いのか?です。
そこで「十進ベーシック」ソースはこんなのです。
!ブラジル50%、メキシコ25%、キリマンジャロ25% LET n=10000 !豆10000個 LET a=50 !豆1の割合(%) LET b=25 !豆2の割合(%) LET c=25 !豆3の割合(%)
LET bean$="" !豆を測る。 LET ma=INT(n*a/100) LET bean$=REPEAT$("a",ma) LET mb=INT(n*b/100) LET bean$=bean$&REPEAT$("b",mb) LET mc=n-(ma+mb) LET bean$=bean$&REPEAT$("c",mc)
!PRINT bean$ !ブレンドする。 RANDOMIZE
FOR i=1 TO n
LET l=INT(RND*n)+1 LET r=INT(RND*n)+1 IF l>r THEN LET dum=l LET l=r LET r=dum END IF LET bean$=bean$(l:r)&bean$(1:l-1)&bean$(r+1:n)
NEXT i PRINT bean$
!テスト LET tn=100 ! 資料とする豆粒の個数 100 LET tt=20 ! 試行の回数
FOR j=1 TO 10
LET sd=0 FOR ti=1 TO tt LET s=INT((n-tn)*RND)+1 LET tbean$=bean$(s:s+tn-1) ! PRINT tbean$ LET cnta=0 LET cntb=0 LET cntc=0 FOR i=1 TO tn SELECT CASE tbean$(i:i) CASE "a" LET cnta=cnta+1 CASE "b" LET cntb=cntb+1 CASE "c" LET cntc=cntc+1 END SELECT NEXT i LET d=SQR((cnta-INT(tn*a/100))^2+(cntb-INT(tn*b/100))^2+(cntc-INT(tn*c/100))^2) LET sd=sd+d ! PRINT cnta;cntb;cntc;d
NEXT ti PRINT sd/tn
NEXT j END