■配牌の仕方について

 
 ・ 東南荘の麻雀プログラムにおいて、
洗牌はコンピューターの乱数によって瞬時に行われます。
 

 ・ 実際の麻雀と同じように、局の開始時に、136枚(三人打ちの場合は108枚)の牌の位置が確定します。

 ・ 鳴きにより、つもる順番は変わりますが、山の牌は動きません。また、カンにより、リンシャン牌の位置から牌がつもられ、最後尾のツモ牌が王牌に隠れます。
 

 ・ プログラムのアルゴリズムとしては、1-136の範囲の乱数を生成し、位置情報の交換により、牌を混ぜる処理をしています。
 

■乱数の精度について

 
 ・ 東南荘で使用している乱数エンジンの精度は、乱数の分布が均等であるかどうかが指標になると考えられます。
 

 ・ 一局の洗牌は、1-136の範囲の乱数を136xN回(四人打ちの場合)生成することによって行われます。
(Nの値を今回のテストに基づき、適正な値に定めることとします。)
 

 ・ 136回生成テスト

1回目
2回目
3回目

0回から5回までの範囲でばらつきが見られます。

(例:1=2は1が2回出たことを意味します。) 

1回目

2回目

3回目

1=0

2=2

3=3

4=2

5=2

6=0

7=2

8=1

9=3

10=1

11=0

12=1

13=0

14=0

15=0

16=0

17=0

18=1

19=0

20=1

21=2

22=1

23=1

24=1

25=1

26=0

27=0

28=1

29=3

30=2

31=2

32=0

33=1

34=0

35=2

36=1

37=2

38=0

39=2

40=1

41=1

42=1

43=0

44=1

45=2

46=2

47=0

48=1

49=0

50=0

51=2

52=1

53=1

54=2

55=0

56=2

57=0

58=2

59=3

60=0

61=0

62=0

63=0

64=1

65=3

66=0

67=1

68=0

69=6

70=1

71=1

72=0

73=0

74=0

75=1

76=0

77=0

78=1

79=0

80=2

81=1

82=0

83=0

84=2

85=1

86=0

87=2

88=0

89=0

90=1

91=0

92=1

93=0

94=0

95=0

96=0

97=0

98=0

99=0

100=3

101=0

102=0

103=0

104=1

105=0

106=1

107=1

108=1

109=2

110=2

111=2

112=0

113=3

114=0

115=2

116=2

117=1

118=1

119=2

120=2

121=1

122=4

123=0

124=4

125=1

126=1

127=1

128=3

129=1

130=2

131=1

132=0

133=2

134=0

135=1

136=0

 

1=1

2=2

3=2

4=1

5=0

6=1

7=0

8=0

9=1

10=1

11=0

12=0

13=0

14=0

15=1

16=4

17=2

18=3

19=0

20=0

21=1

22=0

23=1

24=0

25=2

26=3

27=2

28=2

29=2

30=0

31=1

32=1

33=0

34=1

35=0

36=0

37=1

38=0

39=0

40=0

41=1

42=0

43=1

44=2

45=0

46=0

47=0

48=3

49=1

50=1

51=1

52=6

53=3

54=1

55=2

56=1

57=0

58=2

59=1

60=2

61=0

62=2

63=1

64=1

65=0

66=1

67=0

68=1

69=1

70=0

71=0

72=1

73=1

74=1

75=1

76=0

77=0

78=1

79=1

80=0

81=1

82=0

83=3

84=1

85=2

86=1

87=1

88=1

89=2

90=1

91=1

92=1

93=1

94=2

95=0

96=1

97=1

98=0

99=3

100=0

101=2

102=2

103=1

104=2

105=0

106=1

107=1

108=3

109=0

110=0

111=2

112=2

113=2

114=1

115=0

116=1

117=1

118=1

119=1

120=3

121=0

122=0

123=2

124=1

125=0

126=1

127=0

128=2

129=1

130=2

131=1

132=0

133=0

134=0

135=0

136=0

1=1

2=1

3=1

4=2

5=0

6=1

7=3

8=0

9=2

10=2

11=2

12=0

13=0

14=0

15=1

16=0

17=2

18=2

19=1

20=3

21=0

22=0

23=1

24=1

25=2

26=0

27=1

28=2

29=0

30=0

31=1

32=5

33=0

34=1

35=1

36=1

37=0

38=0

39=1

40=2

41=1

42=1

43=1

44=1

45=1

46=0

47=2

48=0

49=0

50=3

51=0

52=0

53=0

54=1

55=0

56=1

57=0

58=1

59=0

60=1

61=2

62=2

63=3

64=0

65=0

66=2

67=4

68=1

69=0

70=0

71=0

72=1

73=1

74=0

75=2

76=1

77=0

78=1

79=2

80=1

81=0

82=0

83=2

84=2

85=3

86=0

87=0

88=1

89=1

90=0

91=0

92=1

93=1

94=2

95=1

96=2

97=2

98=0

99=1

100=0

101=1

102=2

103=1

104=1

105=0

106=3

107=0

108=0

109=0

110=1

111=0

112=1

113=0

114=0

115=0

116=2

117=0

118=2

119=1

120=4

121=1

122=2

123=0

124=2

125=1

126=1

127=1

128=0

129=1

130=1

131=0

132=2

133=3

134=1

135=1

136=1

 


 ・試行回数を増やしてみます

136x100回(Nが4の場合 25局分)生成テスト
1回目

136x1000回(Nが4の場合 250局分)生成テスト
1回目

136x10000回(Nが4の場合 2500局分)生成テスト
1回目


136x100000回(Nが4の場合 25000局分)生成テスト
1回目

136x1000000回(Nが4の場合 250000局分)生成テスト
1回目

回数が増えるにつれて、ばらつきの具合が小さくなっている様子がわかります。

(例:1=2は2が1回出たことを意味します。) 

100回

1.000回

10.000回

100.000回

1000.000回

1=100

2=107

3=113

4=95

5=92

6=100

7=96

8=102

9=108

10=104

11=106

12=96

13=101

14=117

15=83

16=98

17=107

18=100

19=116

20=113

21=108

22=103

23=102

24=108

25=107

26=91

27=91

28=109

29=119

30=89

31=88

32=97

33=93

34=99

35=101

36=93

37=99

38=114

39=100

40=100

41=103

42=88

43=81

44=93

45=96

46=116

47=99

48=92

49=102

50=87

51=118

52=100

53=103

54=112

55=109

56=90

57=95

58=91

59=95

60=100

61=91

62=87

63=99

64=102

65=97

66=114

67=102

68=97

69=100

70=92

71=104

72=105

73=98

74=97

75=88

76=116

77=95

78=89

79=82

80=102

81=113

82=91

83=103

84=78

85=100

86=97

87=106

88=99

89=81

90=99

91=107

92=90

93=110

94=84

95=113

96=104

97=111

98=97

99=118

100=97

101=92

102=123

103=89

104=103

105=101

106=97

107=108

108=96

109=115

110=112

111=85

112=110

113=89

114=79

115=101

116=83

117=116

118=98

119=107

120=104

121=76

122=100

123=87

124=121

125=123

126=100

127=113

128=91

129=98

130=97

131=101

132=104

133=93

134=97

135=100

136=101

 

1=966

2=948

3=1017

4=999

5=1003

6=1029

7=1081

8=990

9=1015

10=1020

11=1017

12=973

13=1007

14=1044

15=969

16=1048

17=999

18=1049

19=1019

20=1044

21=994

22=992

23=988

24=963

25=1010

26=1050

27=1005

28=987

29=992

30=1009

31=984

32=981

33=1002

34=1005

35=986

36=1078

37=949

38=1038

39=949

40=996

41=1021

42=1026

43=1008

44=990

45=970

46=1014

47=1039

48=961

49=965

50=1006

51=1007

52=1029

53=1027

54=986

55=1040

56=1045

57=1024

58=1004

59=1011

60=991

61=1037

62=948

63=1003

64=961

65=1022

66=1060

67=1007

68=1049

69=1003

70=995

71=958

72=988

73=1073

74=1004

75=997

76=1022

77=996

78=1010

79=976

80=958

81=1023

82=976

83=1031

84=993

85=998

86=1012

87=1010

88=1042

89=984

90=988

91=965

92=980

93=1072

94=1022

95=998

96=1018

97=972

98=1012

99=1008

100=1015

101=943

102=961

103=996

104=965

105=977

106=1034

107=958

108=964

109=1019

110=964

111=996

112=994

113=1009

114=1045

115=943

116=941

117=988

118=993

119=966

120=954

121=995

122=945

123=1014

124=1002

125=992

126=949

127=1015

128=1015

129=1013

130=991

131=1022

132=1027

133=998

134=965

135=990

136=912

1=9883

2=10089

3=10196

4=9908

5=9978

6=10067

7=10167

8=10042

9=10009

10=10011

11=9830

12=9930

13=9674

14=10061

15=9875

16=9939

17=10143

18=10051

19=9979

20=9937

21=9842

22=10005

23=10063

24=9934

25=9918

26=9836

27=10079

28=10065

29=10027

30=9810

31=9863

32=9994

33=10036

34=10065

35=9951

36=9992

37=9812

38=10050

39=10078

40=9909

41=9928

42=10133

43=9854

44=9964

45=10159

46=10003

47=9889

48=10051

49=10070

50=9955

51=10051

52=10026

53=10199

54=9978

55=9973

56=10010

57=10095

58=9874

59=10030

60=10032

61=10056

62=9821

63=9911

64=10172

65=9909

66=10056

67=10011

68=9893

69=10090

70=9904

71=10005

72=10001

73=10054

74=9907

75=10089

76=10098

77=9980

78=10149

79=9875

80=10100

81=10121

82=9904

83=10091

84=9966

85=9970

86=10014

87=10015

88=10121

89=10134

90=9997

91=9968

92=9997

93=10149

94=10049

95=10014

96=9972

97=10007

98=10133

99=9963

100=9932

101=10072

102=9772

103=9972

104=9943

105=9953

106=9890

107=10148

108=10025

109=10145

110=10041

111=9784

112=9993

113=9889

114=9928

115=10051

116=10055

117=9786

118=9993

119=10042

120=10106

121=9842

122=9953

123=9993

124=10057

125=9983

126=10038

127=10034

128=10062

129=10096

130=9866

131=10100

132=10058

133=10094

134=10017

135=10079

136=9724

1=99813

2=99926

3=100322

4=100030

5=100234

6=100234

7=100270

8=99736

9=100179

10=100034

11=99714

12=99846

13=99900

14=100043

15=99670

16=100212

17=100500

18=99644

19=99891

20=99796

21=99667

22=100128

23=100010

24=100270

25=100108

26=99969

27=100414

28=99618

29=99701

30=99924

31=100335

32=100309

33=100292

34=99902

35=100120

36=99991

37=100201

38=99418

39=99517

40=99667

41=100367

42=100039

43=99780

44=99857

45=100088

46=99955

47=99843

48=99587

49=100096

50=99706

51=99681

52=100194

53=100340

54=100156

55=99413

56=99731

57=99610

58=100039

59=99887

60=99852

61=100146

62=100656

63=99766

64=100644

65=99793

66=100874

67=100030

68=99970

69=100031

70=100598

71=100752

72=100156

73=99666

74=100124

75=99909

76=100036

77=100177

78=100084

79=99835

80=99924

81=99891

82=100360

83=100161

84=99633

85=99835

86=100481

87=100050

88=100489

89=100184

90=100146

91=100140

92=99651

93=100043

94=100195

95=100018

96=99394

97=100022

98=99585

99=100390

100=99872

101=99799

102=100094

103=100056

104=100177

105=99723

106=100163

107=100035

108=99609

109=100245

110=100230

111=99599

112=99656

113=99712

114=99710

115=100043

116=100272

117=99555

118=99782

119=100242

120=99897

121=99777

122=99687

123=100228

124=99545

125=100340

126=100259

127=100209

128=100129

129=100259

130=99836

131=99664

132=100467

133=99669

134=99573

135=100011

136=100261

1=9997577

2=10000197

3=10000890

4=9999947

5=9997528

6=9996450

7=9995442

8=9999865

9=9996471

10=9999343

11=9995770

12=9999748

13=10004134

14=10000699

15=10002040

16=10001152

17=10002940

18=9992425

19=10000669

20=10004038

21=9996796

22=9997869

23=9995635

24=9995803

25=10001857

26=10001081

27=9998675

28=10005980

29=10004664

30=10000798

31=9999544

32=10000630

33=10000474

34=9997019

35=9996404

36=10000852

37=9994514

38=9997968

39=10000428

40=10000656

41=10004122

42=9999822

43=9998234

44=9998515

45=9998094

46=9996899

47=10001428

48=10005532

49=10000287

50=9995669

51=10000925

52=9997567

53=10001597

54=10000216

55=10003458

56=10005000

57=10004098

58=10003255

59=10000757

60=10005180

61=10000998

62=10000619

63=9999941

64=10004991

65=9994208

66=9998782

67=10002372

68=9996411

69=10003349

70=10000670

71=9999367

72=10001446

73=10005621

74=10000164

75=10005443

76=10000085

77=9995384

78=10001310

79=10000281

80=9999051

81=10003611

82=9999589

83=9999111

84=10000710

85=10009228

86=10000760

87=10001242

88=9996444

89=10000359

90=9999471

91=9998059

92=10003528

93=10003640

94=10005317

95=9995911

96=10001221

97=9996686

98=10004638

99=10003113

100=9996531

101=9996244

102=9993928

103=9997932

104=9994422

105=9996194

106=10006540

107=10002611

108=9997374

109=10002461

110=9998904

111=10000199

112=9996360

113=9995649

114=10001212

115=10002390

116=9996022

117=9998326

118=9996818

119=10000608

120=9995206

121=9997647

122=10003620

123=10004259

124=10003119

125=9993753

126=10002861

127=9998259

128=9998575

129=10002204

130=10003349

131=9998659

132=10000679

133=9999287

134=10001622

135=9999945

136=9997473

 

■結論

 
 ・ 136回x1回の生成においては、最大で約5倍のばらつきが見られました。

 ・ 136回x100回以上の生成においては、最大でも約0.9-1.1倍程度のばらつきにとどまっています。

 ・ 試行テストによると、東南荘ゲームの乱数エンジンによる、乱数の分布には、回数を増やすごとに均等の分布に近づく性質が見られます。
 

 ・ ばらつきとは、洗牌による牌の位置情報の変化の度合いを意味します。
 

 ・ 位置情報の変化の結果としての、位置の定まった牌については、プログラム上、牌をつもるまで一切考慮しないものとし、打ち手のみが判断を行い、打ち手の判断の結果としての、役の判断においてのみ、プログラムは牌の関連性についての判断を行うこととなります。
 

 ・ 手積みや、全自動卓において、牌にしるしを付けることで、同様なテストが可能と思われますが、試行回数に時間的な制限がでてくることが考えられます。
 

 ・ プログラムによる洗牌の利点は、ばらつきが少ないと言えるような状態まで、瞬時に混ぜることができ、時間的な制約を、ほとんど無視できることではないでしょうか。(手積みや、全自動卓で1日中洗牌した場合と同じ状態にするのに、プログラムでは1秒もかからない)
 

 ・東南荘の乱数生成エンジンにおいては、1回の配牌において、4〜100回の間の、ばらつきが急減する地点を適正なNの値(混ぜる処理を繰り返す回数)と定めることとします。この値については非公開としますが、ばらつきの範囲が1.1-0.9の範囲に留まる値を東南荘は選択するものとします。