ある日のわたしの日記

misora05のブログ本館.ネタは乱雑.

VBAイライラ☆愚痴タイム

わたしの仕事柄,他人の書いたVBAのコードはよく読む‥読まされることになります.
そして,VBAという言語の特性上,読みづらいコードがデフォで作成できてしまうんですが,あれ結構しんどくないですか?

ってことで,私が仕事中に見て「イラっ☆」ってなっているもののうち,めっちゃきついやつをいくつか挙げてみる.
早い話,愚痴です

Option Explicit がない‥!

つまり,変数を宣言していない.
お前は私を殺す気か‥!

ただ,VBA/VBEのデフォルトだと,変数の宣言は強制されていないんですよね.
あのデフォルト設定は人を殺す設定だと思います,マジで.

プロシージャのスコープ宣言がない‥!

VBAでプロシージャのスコープ(Public/Private)が宣言されていないと,Publicとみなされます.
これでモジュールがいっぱい並んでると,死ぬ.

プロシージャの改変の影響がどこまで波及するか,コードぜんぶ見なきゃいけなくなるので,目と心が死ぬんです.

On Error Resume Next を不適切に使うな!

「なんかエラーが起きてるから,そこはOn Error Resume Nextで飛ばそう」としたド阿呆*1は呪われてください.

アレを使っていいのは,

  • その後のエラー番号で適当に分岐を行える.
  • 本当に,無視して問題がないと断言できる.

この2点の場合だけですからね?

グローバル変数を濫用するな!

「よく使う変数はグローバルで全部宣言しておこう」としたド阿呆*2は地獄に落ちてください.
あと,プロシージャに値を渡す・プロシージャから値を受け取る際に,グローバル変数で受け渡しとかしないでください*3

なんかプロシージャがめっちゃ長い.しかも,コピペ部分がいっぱいある.

お前は「ループ」「他のプロシージャを呼び出す」を知らんのか.*4

コメントが妙におちゃらけてる;のにコードの質が悪い.

質が悪いコードしか書けないなら,せめてコメントぐらいちゃんと書こうよ‥.

なお,一度だけコメントに下ネタ*5が書き込んであったのを発見してしまったことがあるけど,その時の私の怒りっぷりは,周囲の人曰く「烈火の如く」だったらしい.周囲の人,すまない.


実践できているかは別だけど,元はOA事務やってた私でも一応これくらいは読んだんだし,上記のようなことをやらかす人間は一度「プログラミング作法について」考えてほしい.マジで.

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

ちなみに,VBAはVB6ベースの言語なので,あの当時のプログラミング作法本(例:Visual Basicバグ退治法―エラーの予防・検出・処置テクニック )でも手に入ればいいんだけど,‥まぁもう20年の昔だしなぁ.

*1:本当にいたんだよ‥.

*2:本当にいたんだってば‥.

*3:これも実話だから死ねる;どうも「引数」「戻り値」っていう概念自体知らなかったっぽい

*4:これ,本当に「知らない」場合があったりするのが怖い.

*5:お客さんに出したプログラムでだぜ‥.

MtGアリーナにおける初手内の土地比率について(3;終)

前回行った,初手内における土地比率の計算結果をもとに言えることを以下に述べます.

misora05.hatenadiary.com

最終的な結果

標準的な「デッキ内の土地比率40%」を用いた場合,MtGアリーナの1本先取試合については下記のように言えると思います.

  • 初手の土地枚数は,かなり3枚寄りの2~3枚に収束する傾向が強く,そこから外れた枚数は普段以上に出づらくなる.
  • 初手の土地が0・6・7というような大事故は基本的に起きない.
    • 土地5枚という状況もめったに発生しない程度になっている.
    • ただし,初手の土地が1枚という状況は確率的には「起こりえる」と言える範囲内である.

また,こうも言えるのではないかと思います.こちらはかなり体感的な部分を含むのですが.

  • デジタルゲームという都合上シャッフルは「完璧に」行われるため*1,数パーセント程度の確率の変化でもそれを実感しやすいのではないか.
    • 実カードで,ことカジュアルプレイの簡易なシャッフルで確実な無作為化が行われているかというと,それはあなたが想像している以上に怪しい.
  • 上記の事柄は,MtGアリーナという試合回数(試行回数)が伸びやすい環境柄,なおのことそれを実感しやすい.

以上を踏まえて,以下記述します.

マナ・フラッドとマナ・スクリューどちらがまだましか

マナを引きすぎるタイプの土地事故が「マナ・フラッド」,マナを引かなすぎるタイプの土地事故が「マナ・スクリュー」ですが,私のデッキの場合はマナ・フラッドを起こした方がまだ勝算があると判断しています.

というのも,重い呪文を多数積んだ私のデッキの場合,もしマナ・フラッド気味の状況から何かキーカードを引けば一気に逆転が狙えるのに対して,マナ・スクリューを起こした場合はその逆転の芽すらないという最悪の状態に陥りやすいためです.

なお,もしこれが軽いビートダウン,たとえばウィニーやスライだった場合は逆で,マナ・フラッドを起こした方がひどい状況になるのではないかと推測します.
これらのデッキの場合は特定のキーカードがないですし,デッキ自体が軽い都合上,土地を1枚引いただけでも戦況が大きく変わりやすいうえ,「軽いカードを引いたそばから次々に叩きつける」という単純な戦法が,重量級のデッキに比べてもまだ行いやすいのではないでしょうか.

これを踏まえてのデッキ調整

私のデッキのうち土地22枚だったものは念のため,あまり活躍していなかったカードを2枚,土地に差し替えるという措置を取りました.
高々数パーセントの差ですが,重い呪文が多い都合上,不要な状況でそれを引いてしまうよりは,土地を引いた方が強いという判断によるものです.

これがどう響くのかはこれから実戦を経て確かめてみたいと思います.

*1:もちろん,シャッフルを行うプログラムが正しく組めていること前提だが,それについては心配しなくていいだろう.

MtGアリーナにおける初手内の土地比率について(2)

前回の続きで,MtGアリーナにおける初手の土地比率を調べてみた.

今回は計算が多くなるので,割合を示す数字や計算結果を示す画像が多く表示されます.ご了承ください.

TCGにおける初期手札の確率計算(基本)

これについては別ページで記述したため割愛します.
詳しくは以下のページをご参照ください.

MtGにおける初期手札内の土地比率

上記(別ページ)の式から,「デッキ中に何枚土地を入れたら,どの程度の確率で初期手札に何枚土地が来るのか」を計算してみることにしました.

まずは61枚デッキ中,24枚が土地の場合.
およそ30.64%の確率で初期手札に土地が3枚,27.58%の確率で初期手札に土地が2枚来る計算となります.

f:id:misora05:20190627222945p:plain

次いで,61枚デッキ中,22枚が土地の場合. 割合は微妙に逆転し,およそ29.03%の確率で初期手札に土地が3枚,30.49%の確率で初期手札に土地が2枚来る計算となります.

f:id:misora05:20190627222950p:plain

MtGアリーナにおける初期手札内の土地比率

さて, http://mtgwiki.com/wiki/土地事故 によれば,アリーナの初期手札は以下のように操作がなされているようです.

Magic: The Gathering Arenaの1本先取試合では、土地事故が起こりにくくなるよう意図的な操作が行われている。
その内容は、7枚の初手を2つ作り「デッキ内の土地比率に近い方を選ぶ」というもの。

私のデッキの場合,7枚の初手を2つ作ったときの組み合わせの発生確率は下記のようになります.

24/61枚が土地の場合.

f:id:misora05:20190628000211p:plain

22/61枚が土地の場合.

f:id:misora05:20190628000218p:plain

ここに,「7枚の初手を2つ作り「デッキ内の土地比率に近い方を選ぶ」」というアリーナの調整を加えると,以下のようになります.

24/61枚が土地の場合,初手に土地が3枚ある確率は51.89%,2枚ある確率は30.65%.
手札に土地が2枚か3枚である確率は,58.22%から82.54%へ.

f:id:misora05:20190628033634p:plain

22/61枚が土地の場合,初手に土地が3枚ある確率は49.64%,2枚ある確率は33.98%. 手札に土地が2枚か3枚である確率は,59.52%から83.61%へ.

f:id:misora05:20190628033636p:plain

これらから見ると,

  • 元の状態の初手に比べてかなり尖った初期手札になっていること.
  • 初手に土地が0・6・7のような極端な大事故はまず起きない.
    • 初期手札に土地1枚は「まれに起こる」レベルの確率にまで調整されていること.
    • 加えて,初期手札に土地5枚という状況も極めて発生しづらくなっていること.

がわかると思います.
ここまで調整が加わっているのなら,初期手札に土地が2~3枚というパターンが非常に多く見られることも納得です.

また,先の記事で書いた

前者の土地22枚デッキは初手に土地が2枚から3枚,後者の土地24枚デッキは初手に土地3枚が集まる傾向が強いように感じられました.

という2つのデッキ間の差異は,

  • 単にシャッフルが機械的に正しく行われた.
  • MtGアリーナという都合上,対戦回数がかなり伸びやすい*1

という結果なのかもしれません.
数字上は高々数パーセントの差ですが,それが正しく反映されているうえに試行回数(対戦回数)が多くなれば,その差も無視できないものとなってくるのではないでしょうか.

付記

なお付記すると,

  • 24/61枚が土地の場合はデッキ内の土地比率は39.34%,
  • 22/61枚が土地の場合はデッキ内の土地比率は36.07%

上記の通りいずれの場合であっても,7枚の初手2つを作ったとき,初期手札内の土地が3枚であれば,それが最も優先して選ばれることとなります*2

これらを経ての総まとめを次回示します.

misora05.hatenadiary.com

*1:1日30試合はざら.

*2:初期手札内の土地が3枚である場合の土地比率は42.86%,2枚である場合の土地比率は28.57%.

MtGアリーナにおける初手内の土地比率について(1)

MtGアリーナの対戦内容を記録していたら,どうも

  • 初手の土地が0・6・7というような大事故が起きづらいようになっているのではないか?
  • 初手の土地比率が妙に特定の値に固まってはいないか?

という疑いがあったので,簡単に調べてみました.

結果(1)

これについては簡単に記述が見つかりました.
以下 http://mtgwiki.com/wiki/土地事故 より引用.

Magic: The Gathering Arenaの1本先取試合では、土地事故が起こりにくくなるよう意図的な操作が行われている。
その内容は、7枚の初手を2つ作り「デッキ内の土地比率に近い方を選ぶ」というもの。

ちなみに,私が使っていたデッキは

  • 61枚デッキ.うち土地24枚(土地比率39.34%)
  • 61枚デッキ.うち土地22枚(土地比率36.07%)

でした.後者がマナ加速を多めに含んだデッキ,前者はそうでもない普通のデッキです.
ん?なぜ61枚だって?「素数だから」に決まってんじゃん(

いずれにせよ,上記のような操作が行われているのであれば,初手の土地が0・6・7というような大事故は起きづらそうですね.

さらなる疑問

これはどうも体感的なものなのですが,

初手の土地比率が妙に特定の値に固まってはいないか?

前者の土地22枚デッキは初手に土地が2枚から3枚,後者の土地24枚デッキは初手に土地3枚が集まる傾向が強いように感じられました.

ところが,後者の土地22枚デッキで「初手土地2枚」っていうのはあまりよろしくない傾向なのですよ.その後も順調に土地を引けばまぁいいんですが,マナが詰まってしまうとそのまま事故死しますし.
一般に私は,重めのデッキやコントロールデッキでは,マナ加速の有無を問わず,初期手札の土地枚数が3~枚であることをよしとする傾向があります.

ということで,計算してみた.

長くなりそうなので日を改めて,続く.

misora05.hatenadiary.com

TCGにおける初期手札の確率計算

はてなブログで数式がどの程度利用できるのかのテストを含め,記述.

TCGにおける初期手札の確率計算(基本)

デッキの枚数が n 枚・初期手札が r 枚のとき,デッキに x 枚投入されたカードが初期手札に y 枚来る確率は,以下の式で求められます.

 \displaystyle \frac{{}_{x}C_y \times {}_{n-x}C_{r-y}}{{}_{n}C_r}

たとえば,MtG(初期手札7枚)において,60枚デッキ中24枚を土地にした場合,初期手札に土地がちょうど3枚来る確率は,

 \displaystyle \frac{{}_{24}C_3 \times {}_{60-24}C_{7-3}}{{}_{60}C_7}=\frac{{}_{24}C_3 \times {}_{36}C_{4}}{{}_{60}C_7} \fallingdotseq 30.87\%

となります.
ことばで書くと「24枚の土地の中から3枚,そうではない36枚の中から4枚を引く組み合わせは,60枚中7枚を引く組み合わせのうち何%にあたるか?」となりましょうか.関数電卓を持っているなら簡単に計算できます.

ちなみに,よく使うような計算式.

遊戯王の初期手札(5枚)において,40枚のデッキ中に3枚投入したキーカードが最低でも1枚初手に来る確率.
これは,1から「手札にキーカード以外の37枚が5枚揃ってしまう確率」を減じた値に等しい.

 \displaystyle 1- \frac{{}_{37}C_5}{{}_{40}C_5} \fallingdotseq 37.50\%

これもよく見る値.

MtGの初期手札(7枚)において,60枚デッキに16枚投入したキーカードが最低でも1枚初手に来る確率.
この値はデッキ投入の一つの「めやす」として大いに利用が可能です.

 \displaystyle 1- \frac{{}_{44}C_7}{{}_{60}C_7} \fallingdotseq 90.08\%

これは,標準的な60枚デッキでは,16枚投入したカードはおよそ9割の確率で初手に来ることを意味します.
「重要な役割を持たせたカードは最低16枚投入する」という私なりのデッキ構築の根拠としています.

はてなブログMarkdown記法で数式を書くのは難しい.

私はこの原稿をVSCodeで書いているのですが,VSCodeでは問題なく表示された数式が,はてなブログでは正しく表示されないことがあるようです.

これは恐らく,TeX記法で使われている記号などがMarkdown形式と衝突していることに起因しているのではないかと思います.

これは,編集モードをはてな記法にすれば回避できるようなのですが,この文章の本体にあたる原稿は既にMarkdownで書き上げてしまっています.
したがって,この部分だけは別の記事として起こし,本体の文章から参照するようにしてみましたとさ.

MtGアリーナ「ギデオンの犠牲」イベント・所感

MtGアリーナの『灯争大戦』クロニクル第5週・「ギデオンの犠牲」イベントもほぼ終わりを迎えたので,今回のイベントの雑感をつらつらと書いてみます.

なお,今回のイベントの特別ルールは,「『ラヴニカのギルド』『ラヴニカの献身』『灯争大戦』の3セットのみの限定構築*1」です.「ラヴニカ3部作ブロック構築」とでも言いましょうか――ブロックの概念およびブロック構築は廃止されてしまいましたが.

ちなみに,イベント開始時の日記がこれ.
最後までほとんど変わらないデッキを使い続けたことになります.

以下所感.

みんな意外とデッキは弱いw

こういうと語弊がありますが,シングルカード取引ができないMtGアリーナという都合上,「本当に欲しいカードを使ってデッキを組む」というのは結構大変な――重課金が必要となってしまう――せいか,皆結構妥協の痕跡がみられるデッキを使っている気がしますw
私もそうですが,所持しているショックランドと所持している強いレアが噛み合わず,ギルド門で代用していたりとか,そういうのはざらではないでしょうか.

もちろん,ワイルドカードをふんだんに使えば話は違ってきますが,コモン・アンコモンワイルドカードならまだしも,レア・神話レアのワイルドカードはスタンダード構築で使い果たしちゃった人が多いんじゃないかなぁ‥.

意外とプレインズウォーカーとは遭遇しない.

プレインズウォーカー祭りセットである「灯争大戦」を含んでる都合上,もっとプレインズウォーカーはいっぱい出没するものかと思ってましたが,スタンダード構築戦の方が多く見られる気がします.

ただし,あくまで「意外と遭遇しない」レベルであるため,遭遇自体は普通にします.注意.

よって,《古呪》の投入は賭けになる.

プレインズウォーカーが並んだあとを狙って《古呪》を唱えたら強そうに思えたのですが,上述の通り,プレインズウォーカーは意外と並びません.並ばないどころか「戦場になかなか出てこない」といった方が正しい気もしますが.

なので,プレインズウォーカー対策以外に全く役に立たない《古呪》のデッキ投入は割と賭けになります.
ぶっちゃけ,プレインズウォーカー対策をやるなら,クリーチャーも潰せる《牢獄領域》の方が強いんじゃないか感あります*2

単体除去からのクリーチャーの生存率は案外高い.

この環境にも《溶岩コイル》《暗殺者の戦利品》《屈辱》《牢獄領域》《議事会の裁き》《拘留代理人》など優秀な単体除去はありますが,

  • 《溶岩コイル》はソーサリー・タイミングなうえタフネスが5あれば回避可能.
  • 《暗殺者の戦利品》は単純に打つとアドバンテージを失うため,単純には打てない*3
  • 《屈辱》は怖いけど,そもそも白黒以外からはすっ飛んでこないうえ,この色構成の3マナはいささか重い.
  • 三者はいずれもソーサリー・タイミングだし,割れば救出可能*4

などなど,付け入る隙は結構あるように感じられました.

少なくとも,インスタント・タイミングでクリーチャーに単体除去が打たれることはめったになかった印象です.

ただし,全体除去は強いか.

ただ,この環境はこの環境は全体除去が実用的かつ結構選択肢がある感じがします.

油断してクリーチャーを横に並べていると,《ケイヤの怒り》《時の一掃》《採取+最終》《轟音のクラリオン》《煤の儀式》,マイナーどころでは《虐殺少女》で皆殺しにされかねません.
ていうか,皆殺しにしたし,されました.注意.

デッキのバリエーションは豊富

この環境,コントロールからビートダウンまで様々なデッキが出現しており,「これ」といった最多勢力はないように感じられます.変わったところでは,青緑のライブラリアウト狙いのデッキと当たり,完全な「わからん殺し」を喰らって負けてたりしますw
いわば,各自が自分の持ってる強いカードを集めてデッキを作ってる感じ.もっと言うと,「みんなでリミテッドやってる」感がありますw

これは,シングルカード取引ができないアリーナという環境によることも大いにあると思いますが,こういう環境も悪くない――私は結構好きです.

*1:ただし,《燃え立つ門》は禁止.

*2:《牢獄領域》は白ですし,《古呪》とは色が違いますし,割れば救出可能ですが.

*3:こと,マナクリーチャー相手には除去としての用をなさない.

*4:こと《拘留代理人》はもっとも壊れやすいクリーチャー.

MtF,ナイトブラを買う

貧乳の嘆き

世の中には「胸がない」を示す言葉がありすぎるんですよ.

  • 「まな板」
  • 「ぬりかべ」
  • 「滑走路」
  • 「貧乳」

だいたい,いくら「胸がない」と言っても,さすがに僅かながらでも膨らみはあるわけなので,「平面」を意味するような言葉は不適切だと思うのです.
それこそ「アスピーテ*1」のような優雅な言い回しがあってもいいんじゃないかなと思うのです.
ぺったんこなりに布団に寝そべっても,一応胸の形っぽいものは見えるのですから‥!

ぺったんこMtF,ナイトブラを買う

何回か書いた気もしますが,私の胸はいわゆる「ぺったんこ」です.
どうもこれは母譲り*2っぽく,当の母の口から「諦めてくれ」と宣告されていたりもします.世の中って残酷ですね.

ただ,ぺったんこなりにノーブラ*3で動き回るとやっぱり痛いこと,あとは胸を育てるのに効果があるらしい?ということでナイトブラを購入してみました.

なんかモデルのお姉さんの胸が妬ましいのですが,精神統一,精神統一‥.

お値段は上段が2着で1599円,下段が799円です.さほどの違いはありませんね.
――どころか,見た目外観も着用感もほとんど同じ商品といういうオチが付きました.まぁ,Amazonではよく起こる現象です.

ぺったんこMtF,ナイトブラを付けてみる.

あ,これ心地いいわ,どうしても胸は動くと揺れるわけなのでそれを程よくホールドしてくれています.
不快な締め付け感も特に強くははない――まぁ,ナイトブラという特性上締め付け皆無とはいきませんが,充分気にらない範囲です
――えぇ,コルセットを着用していた時期すらありますからな!w 締め付けには強いんですw

あと私,部屋の中では「裸族*4」をやってるのですが,わずかなりとも見た目なマシになりますね.このナイトブラ,結構カバー面積に多いので,ぶっちゃけ「こいつ一枚だけでいいんじゃないかな」感がしてきちゃう*5のは事実ですね.
夏なんかは暑いし.

で,胸は増えたの??

そんな短時間で増えるかボケナス!!!!
絶賛自分の身体でテスト中だよ!

*1:楯状火山.

*2:私は「母似」とよく言われる.

*3:さすがに家の中限定だよ.

*4:ショーツは履いてる,さすがにw

*5:キャミ着ろ?まぁ正論ですね‥.