«前の日(11-15) 最新 次の日(11-17)» 追記

ema log


2007年11月16日 この日を編集

_ [最近] アジア民族音楽風の曲が良いなぁ

Sound Horizon、光田康典さんぐらいは知っていたのですが、ニコニコで聞いてます。

金穴だし、レンタルしにいこう。


2015年11月16日 この日を編集

_ [game]ごいたのシミュレーション決定版

全ての数値を自分が積もる確率に変更しました。シミュレーション回数は1億回です。5し5しだけ保留していましたが納得がいったので数値を公開します。

シミュレーション結果

名称シミュ理論値
五し3.69%3.69%≒1/27.1
六し0.46%0.46%≒1/217
七し0.0255%0.0251%≒1/3,984
八し0.000410%0.000428%≒1/233,740
五し五し0.00489%0.00486%≒1/20,572
だまだま5.64%5.65%≒1/17.7
三香3.74%3.74%≒1/26.8
四香0.195%0.195%≒1/514

シミュレーション回数を一桁増やしたことで、レアな事象以外は概ね有効数値3桁ぐらいで収束してそうです。

理論値の算出方法

ということで、例の如く、ゆらゆらさんに理論値を算出していただきました。

とかやりとりしていたら

既に詳細なシミュレーションがあることをじぜまろさんから教えていただきました。しかも勝敗が配牌で決まる場合分けされている、より良い内容でした(こちらの計算結果はゲームで登場する確率)。

”ごいた”の駒を配った時点で勝敗が確定している確率を計算してみた

ソースコード

クラスをインスタンス化せず、そのままクラス自体を定数代わりにするようにしたのでちょっと速くなった分、シミュレーション回数を1億回に増やしました。

class SHI  ; def self.to_s; "し"; end; def self.to_i; 0x11; end; end
class GON  ; def self.to_s; "香"; end; def self.to_i; 0x21; end; end
class GIN  ; def self.to_s; "金"; end; def self.to_i; 0x31; end; end
class KIN  ; def self.to_s; "銀"; end; def self.to_i; 0x32; end; end
class BAKKO; def self.to_s; "馬"; end; def self.to_i; 0x33; end; end
class KAKU ; def self.to_s; "角"; end; def self.to_i; 0x41; end; end
class HI   ; def self.to_s; "飛"; end; def self.to_i; 0x42; end; end
class OU   ; def self.to_s; "王"; end; def self.to_i; 0x51; end; end

TIMES = 100000000

def main
	yama = Array.new(10, SHI)
	yama.concat Array.new( 4, GON)
	yama.concat Array.new( 4, GIN)
	yama.concat Array.new( 4, KIN)
	yama.concat Array.new( 4, BAKKO)
	yama.concat Array.new( 2, KAKU)
	yama.concat Array.new( 2, HI)
	yama.concat Array.new( 2, OU)

	goshi = rokushi = nanashi = hasshi = goshigoshi = sanngon = yonngon = 0

	damadama = 0

	TIMES.times do
		yama.shuffle!
		hand1 = yama[ 0,8]
		hand2 = yama[ 8,8]
		hand3 = yama[16,8]
		hand4 = yama[24,8]
		 ou_count = hand1.count(OU )
		shi_count = hand1.count(SHI)
		shi_count2= hand2.count(SHI)
		gon_count = hand1.count(GON)

		damadama += 1 if ou_count == 2

		goshigoshi += 1 if shi_count==5 && shi_count2==5

		case shi_count
		when 5 then goshi   += 1
		when 6 then rokushi += 1
		when 7 then nanashi += 1
		when 8 then hasshi  += 1
		end

		case gon_count
		when 3 then sanngon += 1
		when 4 then yonngon += 1
		end
	end

	puts "だまだま:#{damadama}…#{damadama*100.0/TIMES} %"
	puts "五し:#{goshi  }…#{goshi  *100.0/TIMES} %"
	puts "六し:#{rokushi}…#{rokushi*100.0/TIMES} %"
	puts "七し:#{nanashi}…#{nanashi*100.0/TIMES} %"
	puts "八し:#{hasshi }…#{hasshi *100.0/TIMES} %"
	puts "五し五し:#{goshigoshi}…#{goshigoshi*100.0/TIMES} %"
	puts "三香:#{sanngon}…#{sanngon*100.0/TIMES} %"
	puts "四香:#{yonngon}…#{yonngon*100.0/TIMES} %"
end

main