やたらすごい素数で遊んでみる。

プログラミングの練習中で、気になることはプログラミングで解決して
プログラミングは友達、怖くないよ、って言えるようになりたいと思っています。



今日はこちらの記事について。
integers.hatenablog.com



やたらすごいバズっている。

1089桁の素数を33✕33に並べた行列…

313991399371199131139799331911377
147529895941991587879456361416793
343797754289852575517133312684269
943695978946644516863648961536981
354977375935673418795287369494189
373478623641239162919379269294319
941871985794933399739235523691657
154837889117834232678974449658279
117129522895488222612449716435651
112797868118722475112367318718359
954332756851152845673554343833423
958324129279242571543956244312159
149656971499164148747227159798119
915531789396889314926554998567389
189177184378411356887579966732519
395769634484946484155736859195773
976485587598811713196922772648319
742413259665798111566314845954551
344321292792178583218155711143611
735499324729469232679643212644511
755544726594454683193623626957711
324895114496128478896375157597659
974246467315936911531792288239249
136494329788845728831611728857639
343337449493221561738959339141347
119138332653219119612984163669317
356624631952956188127648784846583
361813646131913157456632928169513
747231224138425962243343371145487
745954412587484837933238642278851
955148574512595199969685612245439
118737626399742196143742577819117
917319979999777371311371999793393


これに136個の相異なるエマープが登場するらしいのですが

ここに出てくる数字の分布が気になり、調べてみました。
(※表の文字を右寄せに出来ません。。どうしたら。。)

全体集計

0 1 2 3 4 5 6 7 8 9 合計
登場する回数 0 156 96 135 121 110 96 120 96 159 1089
端を除いた回数 0 124 96 105 121 110 96 98 96 115 961
端に登場する回数 0 32 0 30 0 0 0 22 0 44 128

おおー。
意外にも?!0が1回も登場していない。
2, 6, 8の登場回数は96で一致する。4は121回。
奇数で比べると、1の登場回数が一番大きくて、少しばらつきがありますね。
7が少ないのが意外。
端っこに限定すると9が最もよく出てくるのですね。

各行での登場する回数の集計

0 1 2 3 4 5 6 7 8 9 合計 分散
1 0 10 0 9 0 0 0 4 0 10 33 18.81
2 0 5 1 2 4 4 3 4 3 7 33 3.61
3 0 3 4 5 3 5 2 5 3 3 33 2.21
4 0 3 0 3 5 3 8 1 4 6 33 6.01
5 0 2 1 5 4 4 2 6 3 6 33 3.81
6 0 4 5 6 3 0 4 3 1 7 33 5.21
7 0 3 2 6 2 4 2 4 2 8 33 4.81
8 0 3 3 3 5 2 2 5 6 4 33 2.81
9 0 6 7 1 4 4 3 2 3 3 33 4.01
10 0 8 4 3 1 2 2 6 5 2 33 5.41
11 0 2 3 8 5 7 2 2 3 1 33 6.01
12 0 4 7 3 5 5 1 2 1 5 33 4.61
13 0 7 2 0 5 2 3 5 2 7 33 6.01
14 0 3 1 4 2 5 3 2 5 8 33 4.81
15 0 6 1 3 2 3 3 6 5 4 33 3.61
16 0 2 0 4 6 5 4 4 3 5 33 3.81
17 0 5 3 2 2 3 3 5 5 5 33 2.61
18 0 6 2 2 5 7 4 2 2 3 33 4.21
19 0 9 5 4 3 3 1 3 3 2 33 5.41
20 0 3 6 4 6 2 4 3 0 5 33 4.21
21 0 3 3 3 5 6 5 4 1 3 33 3.01
22 0 4 2 2 4 5 3 4 4 5 33 2.21
23 0 4 5 4 4 2 3 3 2 6 33 2.61
24 0 4 3 4 3 2 3 4 7 3 33 2.81
25 0 4 2 9 6 2 1 3 1 5 33 6.81
26 0 9 3 6 1 1 5 1 2 5 33 7.41
27 0 3 3 3 4 4 6 2 6 2 33 3.01
28 0 8 2 6 2 3 6 1 2 3 33 5.81
29 0 4 6 6 7 2 1 4 2 1 33 5.41
30 0 2 4 4 6 4 1 4 6 2 33 3.61
31 0 4 3 1 4 8 3 1 2 7 33 6.01
32 0 7 3 3 3 1 3 7 2 4 33 4.61
33 0 6 0 7 0 0 0 8 0 12 33 18.41


端が一番分散が大きい(登場するのは1,3,7,9のみ)のは納得。

端を抜かして分散上位6位をに、下位6位をみどりに色付けしました。

各列での登場する回数の集計

(向きが転置していてすみません。。)

0 1 2 3 4 5 6 7 8 9 合計 分散
1 0 9 0 10 0 0 0 5 0 9 33 17.81
2 0 7 1 2 10 7 1 3 1 1 33 10.61
3 0 2 2 5 6 6 3 4 2 3 33 3.41
4 0 4 2 5 5 3 3 4 4 3 33 2.01
5 0 3 5 7 3 2 1 4 1 7 33 5.41
6 0 5 1 2 5 3 2 7 3 5 33 4.21
7 0 3 3 5 3 3 5 4 3 4 33 1.81
8 0 2 8 3 2 3 2 5 5 3 33 4.41
9 0 2 4 1 7 3 4 2 2 8 33 5.81
10 0 4 2 5 4 4 3 4 2 5 33 2.21
11 0 4 1 3 3 3 1 3 4 11 33 8.21
12 0 5 3 2 3 4 3 2 5 6 33 2.81
13 0 5 4 0 6 1 2 4 5 6 33 5.01
14 0 4 4 4 5 4 2 3 3 4 33 1.81
15 0 4 5 3 5 3 3 1 4 5 33 2.61
16 0 9 3 4 4 6 1 2 2 2 33 6.21
17 0 7 2 4 2 2 3 5 5 3 33 3.61
18 0 6 5 3 2 3 3 3 5 3 33 2.61
19 0 7 2 1 1 4 5 4 5 4 33 4.41
20 0 7 2 6 4 2 3 4 1 4 33 4.21
21 0 3 3 7 0 2 5 4 3 6 33 4.81
22 0 2 4 6 2 3 7 4 0 5 33 5.01
23 0 2 3 5 6 6 1 5 3 2 33 4.01
24 0 2 4 4 5 4 3 3 3 5 33 2.01
25 0 3 4 8 1 2 3 5 2 5 33 4.81
26 0 6 4 2 5 3 6 3 2 2 33 3.41
27 0 5 5 3 2 1 3 2 5 7 33 4.21
28 0 5 4 1 3 3 6 4 4 3 33 2.81
29 0 5 0 5 7 4 3 1 1 7 33 6.61
30 0 3 2 3 5 4 3 4 5 4 33 2.01
31 0 4 3 8 3 5 5 3 1 1 33 5.01
32 0 10 1 2 2 7 1 3 5 2 33 8.81
33 0 7 0 6 0 0 0 6 0 14 33 20.81

同様に端を抜かして分散上位6位をに、下位6位をみどりに色付けしました。

分散の平均は、行:13.283 列:16.958というところでしょうか。

特徴的な素数たち

分散の最も小さい数

分散 2.01:957694881733651744345824316829173

分散 2.01:963879549746749624533521948238521

分散が最も大きな数

分散 20.81:739199791939999391111999773371973

見るからに偏っている??

偶数を多く含む素数
2を最も多く含む 8個 8列目 995772882652788385922162433421727
4を最も多く含む 10個 2列目 144457451155418974435273415644511
6を最も多く含む 8個 4行目 943695978946644516863648961536981
8を最も多く含む 7個 24行目 136494329788845728831611728857639

集計しただけでなかなか作り方の傾向が見いだせませんが。。。
(特に偶数が多い箇所などに傾向見れたら良かったんだけど。。。)

傾向がぱっと見にはわからないので、なおさら、やたらすごい素数ですね。

素数大富豪素数語呂合わせ

一体誰得なのだかわからない、数学用語を使った素数大富豪素数の覚え方を閃きました。
なんの役に立つのか分かりませんが、面白いので計算したりしてまとめました。
枚数が多いので、意外と使えるかもしれません。

素数大富豪や、n枚出し最強素数問題などについてはこちらをご覧ください。

qiita.com

※ちなみに、以下に出てくる「!」は階乗を意味しませんのでご注意下さい。

\mathbb{Q} 上の K 素数

詳しくは書きませんが有理数を係数として作られる体 K のことですね。
「上の〜」の部分を J とおいて、Q J K と語呂合わせします。
QJK 型素数はこちら。(100まで計算しました。)

n n QJK n QJK n
4 4 QJK 11 QJK 11
5 5 QJK 13 QJK 13
28 28 QJK 31 QJK 31
32 32 QJK 49 QJK 49
38 38 QJK 71 QJK 71
59 59 QJK 91 QJK 91
61 61 QJK 97 QJK 97
68 68 QJK
76 76 QJK
77 77 QJK
83 83 QJK
88 88 QJK
94 94 QJK
98 98 QJK


Q上のK…イイ!!!(Q上のK認める素数。)
YO!Q上のK!(Q上のKとお友達素数。)
GO!Q上のK!(Q上のKを応援素数。)
Q上のK…無い。。。(Q上のKをなくしてしょぼん素数。)

…意味がわからなくなってきた。。

\mathbb{Q} 上の K じゃん素数

ちょっと感動が増して、Q J K J 型素数
ちなみに Q 上 K じゃん!はそのままでも素数。(100まで計算しました。)

n n QJKJ n QJKJ n
0 0 QJKJ 9 QJKJ 9
9 9 QJKJ 11 QJKJ 11
11 11 QJKJ 23 QJKJ 23
15 15 QJKJ 39 QJKJ 39
21 21 QJKJ 83 QJKJ 83
24 24 QJKJ 89 QJKJ 89
29 29 QJKJ
33 33 QJKJ
45 45 QJKJ
51 51 QJKJ
57 57 QJKJ
77 77 QJKJ
78 78 QJKJ
87 87 QJKJ
89 89 QJKJ
93 93 QJKJ
98 98 QJKJ


Q上のKじゃん、兄さん!(弟に諭される兄素数。)
Q上のKじゃん、サンキュー!(教えてくれてありがと素数。)

Q上のKジャンク(常にQ上のKを仮定してしまう素数。)

K じゃん!\mathbb{Q} 上の!素数

さらにテンションが挙がって倒置法になってる K J Q J 型素数
落ち着いて!!!と言いたくなる。(一体どんなQ上の体なんだ…。)
これはそのままだと4枚出し最強。(100まで計算しました。)


n n KJQJ n KJQJ n
0 0 KJQJ 11 KJQJ 11
2 2 KJQJ 53 KJQJ 53
5 5 KJQJ
33 33 KJQJ
47 47 KJQJ
48 48 KJQJ
69 69 KJQJ
71 71 KJQJ
75 75 KJQJ
81 81 KJQJ
86 86 KJQJ
89 89 KJQJ


体じゃん!Q上の!!!イイ!(Q上の体に議論を帰着できてよかったね素数。)
体じゃん!Q上の!!!ゴミ。(一体なにが不満なのかわからないKJQJ素数。)




そうなると、 \mathbb{Z}/p\mathbb{Z}を考えたくなります。

 { \mathbb{Z}/p \mathbb{Z}}素数

ここでは、Z を J として、Z/ pZ を J p J 型素数として探します。
(もちろん p は素数。2から1213までの範囲を探索しました。)

p Z p Z
3 J 3 J
31 J 31 J
43 J 43 J
79 J 79 J
103 J 103 J
157 J 157 J
271 J 271 J
307 J 307 J
379 J 379 J
409 J 409 J
571 J 571 J
577 J 577 J
601 J 601 J
631 J 631 J
757 J 757 J
769 J 769 J
787 J 787 J
937 J 937 J
997 J 997 J
1033 J1033 J


一桁のpは 3 だけなんですね。これは少ない。もう少し広げて探索してみよう。


 { \mathbb{Z}/p \mathbb{Z}}素数その2。


Z/pZ は、Z over pZ と読みます。
日本語としてはちょっと気持ち悪いけど over を上の( J )として左からそのまま並べて
J J p J 型の素数を探索します。素数は2から1213までの範囲を探索しました。

p J J p J
2 JJ 2J
7 JJ 7J
13 JJ 13J
19 JJ 19J
31 JJ 31J
47 JJ 47J
67 JJ 67J
83 JJ 83J
89 JJ 89J
107 JJ 107J
131 JJ 131J
137 JJ 137J
163 JJ 163J
173 JJ 173J
229 JJ 229J
263 JJ 263J
271 JJ 271J
277 JJ 277J
307 JJ 307J
317 JJ 317J
331 JJ 331J
347 JJ 347J
433 JJ 433J
461 JJ 461J
523 JJ 523J
541 JJ 541J
547 JJ 547J
601 JJ 601J
631 JJ 631J
643 JJ 643J
653 JJ 653J
677 JJ 677J
683 JJ 683J
709 JJ 709J
733 JJ 733J
769 JJ 769J
811 JJ 811J
821 JJ 821J
839 JJ 839J
859 JJ 859J
907 JJ 907J
911 JJ 911J
919 JJ 919J
937 JJ 937J
953 JJ 953J
1013 JJ 1013J
1039 JJ 1039J
1069 JJ 1069J
1087 JJ 1087J
1097 JJ 1097J
1109 JJ 1109J
1123 JJ 1123J
1151 JJ 1151J
1187 JJ 1187J


691がないのがちょっと残念。

というわけでこの辺で。まだ面白いの色々ありそうです!

日曜数学アドベントカレンダー途中経過

6月の日曜数学会で発表した内容を発展させ、

さらに遺伝的アルゴリズムと組み合わせたものを作ろうとしています。

遺伝的アルゴリズムの勉強兼ねて。)

シミュレーション結果を動画で示そうと思ったのですが、

そこのところで手間取っています…。汗

f:id:haru_negami:20161223032459p:plain

 

青丸は正しく動いているか確認するために仮に描いているものです。

各赤丸が人間を表していて、人々が様々な仕事の戦略を取り、

どんどん進化して行くときに、どんなタイプの人が生き残るのか、

また、街は形成されるのか、などといったことを見て行きます。

明日完成するかな…。。。

 

昨日の話題の引き継ぎですが、

行動のログを取るだけで、自分がいかに無駄に生きているか実感できました。。。

勉強する内容を絞り込みきれていない。

本当に深く深く学びたいものを選びきれていないのかもしれません。。。

明日はもう少し考えてみます。

 

すみません。後日アップします。><

 

 

Google Spread Sheet でライフログをつける。

※12/22 09:00、スクリプトを改良し*1追記しました。

最近ちょっとエクセル的なものにハマっています。
帰宅してぽちぽち Google Apps Script かきました。

ついつい、仕事と関係ない勉強をしているので、
ちゃんと効果的に勉強できているかどうかを測るために
ライフログを作りました。

開始と終了だけ記録すれば、勝手に時刻を取得して、どれだけやったか計算してくれる。


電車の中でちょこちょこと勉強するときに、
Google Driveを開いて、開始!終了!と記録できれば楽しいかなぁと。

見た感じはこんな風になっています。

 f:id:haru_negami:20161222020003p:plain

 

 

  • 実行した日付
  • やったこと(カテゴリー)
  • 終了
  • メモ(実施内容詳細)
  • かかった時間
  • 開始時刻
  • 終了時刻
  • やることリスト
  • 累計時間

赤字が、書き込む内容。

一仕事終えたら、やったことリスト(ドロップダウンで入力)でやったことを選択し、
終わり、と記入する。
メモ欄に詳細を入力。

1日にどれくらい仕事してるか、振り返りたいと思います。
(社会人時代は、大体資料を作るときに時間を測って記録してましたな。。。そういえば。)

本当はグラフ化もしたかったのですが、
これくらいの量ならグラフ化しなくても判断はしやすいかなと。

 

スクリプトはこちらをベースにさせていただきました。
 

shinjirogoto.com


 

ほぼそのままです。。。

スクリプトは下記の通り。

function insertLastUpdated() {
  var sheet = SpreadsheetApp.getActiveSheet(); //現在触っているシートを取得
  var currentRow = sheet.getActiveCell().getRow(); //アクティブなセルの行番号を取得
  var currentColumn = sheet.getActiveCell().getColumn();
  var currentCell = sheet.getActiveCell().getValue(); //アクティブなセルの入力値を取得
  var updateRange = sheet.getRange(currentRow,6) //スタートの時刻を入力するセルを記入
  var updateDate = sheet.getRange(currentRow,1)//日付を記入するセルを取得
  var endDateRange = sheet.getRange(currentRow,7) //終了の時刻を入力するセルを記入
  //行動日時の記入
  if(currentRow>1){ //もし行番号が1より大きい場合(固定行を除くための処理)
    if(currentColumn == 3)//終了のセルにカーソルがある場合
      if(currentCell) { //もし終了記録のセルが空白でなかったら
      updateDate.setValue(new Date());
    }
  }
  //終了時刻の記入
  if(currentRow>1){ //もし行番号が1より大きい場合(固定行を除くための処理)
    if(currentColumn == 3)//終了のセルを記入する場合
      if(currentCell) { //もし終了記録のセルが空白でなかったら
      endDateRange.setValue(new Date());
    }
  }}

 
スクリプトの上の時計のアイコンをクリックして、
下図の通り値の更新時にスクリプトが実行されるようにしました。

f:id:haru_negami:20161222020700p:plain


お風呂とかはカテゴリーメンテナンスに入れております。

それでは!ブログ書くのに16分かかったらしい!ほお!

※追記。今日は帰り道に特異ホモロジーの計算をちょこちょこしました。iPad大活躍。

*1:開始時刻は前の作業の終了時刻としました。

新しい試み

新年に向け、徐々に課題整理をしていきます。

目次



ノートの電子化

本日は、iPad ProとApple Pencilを購入。
勉強したことをいつでも振り返れる仕組みを作りました。

学んだことをもっと整理したいと思ったので、
ノートの電子化を進めたく。

早速、とても楽しくてハマっています。いつまでも書き続けられる。

例)GoodNotes 4を使用

f:id:haru_negami:20161221020222j:plain

f:id:haru_negami:20161221020226j:plain

 

f:id:haru_negami:20161221020235j:plain



ノートのタイトルページを書けるので、整理が楽しい。
直線や円をきれいに書いてくれるのが数学向きですが、
部分を選択してコピペが使えないのがちょっと残念。


仕事の効率化

以前読んでとてもよかったこちらの本。様々書いてある中で書類等の電子化がまだできていなかったので、再度挑戦します。資料の電子化などを進めるべく、本日は机の中の文房具類等を一斉掃除。

 

 
14日間で整理を完了させるプログラムですが、
14日だと新年が明けてしまうので、巻いて行きます。

 

今日の学習

今日はトポロジーの復習少々。
気づいたらノート14ページ書いていた。

境界作用素の計算がまだ慣れないので、
明日は計算多めにしてみます。

電車の中でもノート書いたりして楽しかったです。

明日もがんばろう。

 

 

 

グラフ理論と位相空間のつながりについて

昨日、第2回Weil予想物語に参加した。


この第一講演でホモロジー群について学んだのですが、
その中で、二つの位相空間同相でないことを示す方法として、
同相な空間であれば必ず同じになる位相不変量が異なることを示すことが挙げられた。

様々な位相不変量が研究されているが、その中で面白いものがあった。


位相空間Xから1点をのぞいた補空間の弧状連結成分の数を調べるというもの。
これによって例えば、[0,1)と円は同相でないことが示される。

これを見て思うのは、グラフ理論のこと。
グラフ理論の文脈でいうグラフとは、頂点と頂点同士を結ぶ辺の集合を示す。

グラフには、切断点と呼ばれるものがある。

切断点英語版(cut vertex)とは、それを除くと残されたグラフが非連結となるような頂点のことである。頂点分離英語版(vertex separator)とは、それらを除くと残されたグラフがそれぞれ小さな断片へとなることで非連結となるような頂点の集まりのことである。k-頂点連結グラフとは、k より少ない数の頂点を除くだけでは依然として連結であるようなグラフのことである。独立集合とは、どの二つの頂点も隣接していないような頂点の集合のことであり、頂点被覆とは、グラフの各辺の端点を含むような頂点の集合のことである。グラフの頂点空間英語版とは、グラフの頂点に対応する基底ベクトルの集合を備えるベクトル空間のことである。

 

頂点 (グラフ理論) - Wikipediaより

 
位相空間というと、まず最初に考えるのは開集合の濃度が(非)可算無限であるようなものだと思う*1が、有限グラフのように、有限個の元(とその間のつながり)を持つようなものについても連結成分について考えることがあるのだなと知った。



確かに、点同士を結ぶ辺を、点と点の間が稠密であることと捉えれば、有限個のグラフについても位相幾何学的な考察ができるかもしれない。


と思って調べてみたら、グラフ理論でよく知られる根上先生の本が出てきた。
(珍しく同姓なのです。)

位相幾何学的グラフ理論入門

位相幾何学的グラフ理論入門

 

 



位相幾何学グラフ理論と呼ばれるらしい。
興味を持ったので読んでみよう。



追記:

ありさんにご指摘いただき、グラフはそもそも一次元単体複体であると教えていただきました。そもそも位相幾何学のはじまりはオイラーによるケーニヒスベルグの橋の問題にあるというのが定説ですし、この点について言及できていなかったのはリサーチが甘かったなぁと深く反省しました。。。



*1:たとえばこちらの講義ノートで空間の分類について例示されているが、いずれも濃度が(非)可算無限のもの。有限の場合は、分類が容易なのかもしれないが・・・。

http://kyokan.ms.u-tokyo.ac.jp/~tsuboi/ki2-2009/lecturenote1.pdf

素数大富豪の新しい楽しみ方

この記事は、素数大富豪アドベントカレンダーの19日目の記事です。

www.adventar.org



日曜数学会アドベントカレンダーと同じく、二世さんからバトンを引き継ぎました!

nisei.hatenablog.com


すごいぞー!怒涛の更新!にせいさん!

ロックなコックさん、絶対忘れないですw

そして、つじもったーさんとのバトルのレベルの高さに驚愕!!!!





さてさて。
皆さん、素数大富豪の研究がかなり進んでいらっしゃるので、私はちょっと違った切り口で書いてみようと思います。

その名も、素数大富豪の新しい楽しみ方!


目次

忘年会の幹事目線をいかんなく発揮してます。。。

なぜ、新しい楽しみ方を考えるの???

さて。素数大富豪はそれだけでもとても面白いゲームなのですが、
なぜ敢えて新しい楽しみ方を考えるのでしょう???

それは、先日アップされたこちらの記事に端を発します。



laplacerecollection.hatenablog.com

素数大富豪を今後広めていく上で

・どうやって1回目のプレーやってもらうか
・1回目で印象をよくできるか

というのが主眼となるのかもしれません。

そうなんですよね。
素数!というだけで、難しそう…という反応をされることが度々ある。
そんなとき、ほんのちょこっとだけでもハードルを下げて、親しんでもらえるような楽しみ方ができないかなぁと考えていました。

ハードルを下げるために、こんなことが重要だと考えます。

・ワンプレイの時間がごくごく低い
・難しくなさそう!
・でも楽しさを実感でき盛り上がる
素数大富豪をプレイしてみようと思わせる。

ネトゲそこそこ廃人*1の私が持つイメージとしては、
ゲームの体験版の、ワンステージだけプレイという感じでしょうか?
マリオランも、3ステージ目までは無料だし、そんな体験版を作ってみてもよいのでは??と。

そんな要素を盛り込んだ、イントロ編を考えてみました!

くじ引きに素数大富豪

ある時、忘年会の準備に追われる筆者はこう考えました。

低コスト(時間と手間)で忘年会を盛り上げられないだろうか?

→そうだ、トランプを持っていこう!
→そうだ、素数大富豪をベースに、素数くじ引きしよう!

いつの間にか片付けの時間も迫っており、焦っていた、というのもありますが。。。

お菓子を残してしまった景品用に準備していたので、
くじで当たった人に、プレゼントしよう!と考えました。

素数が出る確率も、ちょうどいい感じなのでは??


1人に2枚ずつ、約20人にトランプを配りまして、素数大富豪でやるみたいに、各桁ごとにトランプの数字を当てはめ素数を作っていただき、大きい素数の人から順に、お菓子を選んでいってもらいました。


正確な数字は忘れてしまったのですが、
およそ6人の人が景品を手にすることが出来ました。

くじ引きをするときには様々な準備をしないといけないのですが、
トランプさえあれば、当選者を決めることが出来るし、
素数の大小関係に基づいて当選者間に順位を定めることができる。

なにより、自分で作るから、考える楽しみもありますし、
景品がほしくない人は、作れないふりをすれば良いのです!!←

素数大富豪の楽しさがこんなところで応用されました!



2枚出し素数を作れるかどうか、皆さんに自然に体験してもらうことができたのです!


素数の大小関係でバトル要素も少しだけ含まれており、このあと、素数大富豪に持ち込む流れが出来ました!3枚、4枚、と増やしていけば、もっとバトル要素は増えるかも。

最初に挙げた条件、

・ワンプレイの時間がごくごく低い
・難しくなさそう!
・でも楽しさを実感でき盛り上がる
素数大富豪をプレイしてみようと思わせる。

をクリアできそうですね!



素数ビンゴ大会

先程の、くじ引きの応用で、即席素数ビンゴ大会も出来ます!
(本当はこれがやりたかったんだけどね。。。)

ビンゴをやろうとしても、準備の手間もコストもそこそこかかりますが、5×5のマスにカードに好きな素数を書いていただき、トランプをくじ引きのようにしてビンゴをすることもできます。書ける素数の上限や、一度に引くトランプの枚数を調整していけば当選の割合も調整できます。問題は、どの素数が出やすいか、割合にばらつきがあることでしょうか。これも、素数大富豪研究の楽しさにのめり込む、ひとつのきっかけになりそうです。(なるのか?)

脳トレ素数大富豪

最後に、最近の私の素数大富豪の楽しみ方として、脳トレとしての素数大富豪について書きます。個人差はあるかもしれないのですが、数学など複雑なロジックを理解したいとき、頭のなかに大きな黒板を用意して、そこに映像を投影して考えたり、論理式を思い描いたりして考えます。(あと、個人的に記憶の方法が映像優位です。)

そこで、頭の中の画像を使った情報処理の能力を鍛えたいなぁと常々思っていました。つまり、何がしたいかというと、

より沢山のトランプを頭のなかで操作できるよう鍛えれば、脳トレになるんじゃないか、ということ。

大体、子供の頃から妄想癖があったので、こういうのすごい好き。



今のところ、こんな手順を考えています。

1. 頭のなかにトランプを一組用意します。
2. 何人プレイをするか決めます。(最初は1人から。)
3. 最初何枚ずつ配るか決めます。
4. 素数大富豪を頭のなかでプレイします。ただし山札からは自由に選べるとします。
5. 出したカードと山札を覚えていられなくて死にます。
6. 次はもっと長い間プレイできるようになろう!と誓います。
7. 1に戻る。



ここで、いきなり52枚+ジョーカーでプレイするのはなかなか厳しいので、
トランプの数の上限を引き下げるというような工夫も良さそうです。

新たな問題提起

素数くじについて


一体何枚ずつ配れば、いい感じに当選者の割合を調整出来るのでしょうか?
素数が出たにもかかわらず景品を手にすることが出来なかったら、悲しいです。
(それでも素数には出会えるので、素数大富豪の楽しさはこんなとk(以下略。)

まず、近藤さんが、はっぴーぷらいむだいふごうの日に、こんな計算をしてくれました。

なるへそへそ。
カードを引く人数は1人で計算しているのかな??ここでさらに考えた問題。

Q: 簡単のため、ジョーカーは抜くこととする。
52枚のトランプを n 人で m 枚ずつ配り、素数になる人数の割合を求めよ。

今回はm=1の場合について計算し、素数になる期待値とある人が素数になる割合を計算しました。m≧2の場合についても引き続き計算したいです。



素数ビンゴ大会について


ここから、いくつかの問題を考えることができると思います。

Q: 52枚のトランプから n 枚のカードを引いたときに、各素数が出る確率を求めよ。
素数に対し、出し方が何通りあるかリストアップすればできそうですね。

Q: ビンゴカードに書ける素数の上限を N とし、一度に引くトランプの枚数を n 枚としたときに、最も当選確率が公平になる n は?逆に、(N, n) が与えられたとき、どのようにビンゴカードを記入すれば当選確率が最大化できるか?

当選の公平性はどう定義したらよいか、など、いろんな事が考えられそうです。。

脳トレ素数大富豪


Q: トランプ1セット、1枚につき1回ずつ出して、全て出し尽くせるような出し方はあるか?

色んな問題があるのですが、ちょっと計算間に合いませんでした。。。涙

今後いくつかアップしていきたいと思います!


おまけ

素数くじについての問題で、m=1の場合の計算をする際、組み合わせ生成の高速アルゴリズムを見つけたので、下記に記載してみます。といっても全然大したことないもので、最初に組み合わせの数をざっと計算して配列に格納し、適宜 n, r を指定して値を取り出すだけという。(結果は面白くないですが。。。)


# -*-coding:utf-8-*-

import itertools
import math


#### 順列 nPr の計算

def permutations_mine(n, r):
    ans = math.factorial(n)/math.factorial(n-r)
    return ans

#### トランプの枚数は52枚とする
#### 記号が異なるカードは区別するものとする

TRUMP = 53


#### nPr の計算結果を格納する配列
permutation_library = range(TRUMP*TRUMP)
for i in range(0,TRUMP*TRUMP):
    permutation_library[i] = 0

for n in range(TRUMP):
    for r in range(n+1):
        permutation_library[r+n*TRUMP] = permutations_mine(n,r)

#### nCr の計算結果を格納する配列

combination_library = range(TRUMP*TRUMP)

for i in range(0,TRUMP*TRUMP):
    combination_library[i] = 0

for n in range(0,TRUMP):
    combination_library[0+n*TRUMP] = 1
    combination_library[n+n*TRUMP] = 1

#### パスカルの三角形を利用し、nCr= (n-1)C(r-1) +(n-1)Cr を計算

for n in range(2,TRUMP):
    for i in range(1,n):
        combination_library[i+n*TRUMP] = combination_library[i-1+(n-1)*TRUMP]+ combination_library[i+(n-1)*TRUMP]


#### nPr, nCrの計算結果を表示

for n in range(0,TRUMP):
    for r in range(0,TRUMP):
        print permutation_library[r+n*TRUMP],
    print ("\n")

for n in range(0,TRUMP):
    for r in range(0,TRUMP):
        print permutation_library[r+n*TRUMP],
    print ("\n")



# 1枚ずつ配ったときに素数がでる確率を計算
# 配る人数、素数がでる人数の期待値、一人が素数を出す確率を表示

for n in range(1, TRUMP):
    sum = 0
    base = permutation_library[n+TRUMP*(TRUMP-1)]
    for i in range(1,n+1):
        sum = sum + i * combination_library[TRUMP*n+i] * permutation_library[i+6*4*TRUMP]* permutation_library[(n-i)+7*4*TRUMP]
    expect = sum/float(base)
    print (n, expect, expect/n)

明日は、もっちょさんによるmathpower決勝戦についてです!楽しみです!^^

*1:先日、しばらく触らないうちにブラウザ三国志のデータが全部消えていたのに多大なるショックを受けました。。。あんなにやりこんだのに…。。。新人ランキング1位取ったこともあるのに。。。張飛よ…。周瑜よ…。。。