このブログ内を検索可能

2021年9月14日火曜日

最近の様子

 ものすごく久しぶりになったが、最近の様子を報告すると…。

当時持っていた不安が全然なく、底なしの元気かと言われていた時代はとっくに終わりをつげ、最近はあまり調子は悪くもなく、良くもなくといった感じである。


なおこのブログは自分の歴史を振り返るときに、大いに参考にさせたいただいた。

最近やるべきことはそこまで去年などの入試時代と違い多くないので、楽ではあるが…。

レゴを作成したり、プログラミングで遊んだりしている。

例えばアニマロッタのチェーンボンバーの払い戻し率を計算できるプログラムを作ったりした。

dataset = 1; oddslist = Table[Table[0, 10000], dataset]; counter = 

 Table[Table[0, 1001], dataset]; For[game = 1, game <= dataset, game++,

  totalodds = 0; maxodds = 0; 

 For[times = 1, times <= 100000, times++, oddsupinitial = 0; 

  rowodds = {1.5, 0.6, 0.5, 0.5, 0.6, 1.5}; 

  basicrowodds = {1.5, 0.6, 0.5, 0.5, 0.6, 1.5}; maxchain = 1; 

  chain = 1; oddsup1 = RandomInteger[{2, 5}];

  oddsup2 = RandomInteger[{1, 2}]; 

  Which[oddsup2 == 1, oddsup2 = 1, oddsup2 == 2, oddsup2 = 6]; 

  pattern = allpattern[[game]];

  in = {1, 2, 3, 4, 5, 6, 7, 8};

  pattern[[RandomInteger[{31, 54}]]] = 6;

  random = RandomInteger[{1, 10}];

  If[random == 1, pattern[[RandomInteger[{31, 54}]]] = 6];

  syokipattern = pattern; 

  numlist = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 

    17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 

    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};

  For[i = 1, i <= 100, i++, randomA = RandomInteger[{1, 54}];

   randomB = RandomInteger[{1, 54}];

   taihi = numlist[[randomA]];

   numlist[[randomA]] = numlist[[randomB]];

   numlist[[randomB]] = taihi];

  syokinumlist = numlist;

  For[a = 1, a <= 5, a++, chain = 1; bomblist = Table[0, 54]; 

   erase = Table[0, 54]; k1 = k2 = k3 = k4 = k5 = k6 = 0;

   bombwait1 = {0, 0, 0, 0, 0, 0, 0, 0, 0}; 

   bombwait2 = {0, 0, 0, 0, 0, 0, 0, 0, 0};

   bombwait3 = {0, 0, 0, 0, 0, 0, 0, 0, 0}; 

   bombwait4 = {0, 0, 0, 0, 0, 0, 0, 0, 0};

   bombwait5 = {0, 0, 0, 0, 0, 0, 0, 0, 0}; 

   bombwait6 = {0, 0, 0, 0, 0, 0, 0, 0, 0};

   

   precount = 0; postcount = 1; bombflag = 0; 

   Which[a == 1, 

    For[b = 1, b <= 54, b++, 

     If[numlist[[b]] == in[[1]] || numlist[[b]] == in[[2]] || 

       numlist[[b]] == in[[3]], 

      Which[pattern[[b]] == 6, bombflag = 1; mass = b, 

       pattern[[b]] < 6, numlist[[b]] = 0; pattern[[b]] = 0]]], 

    a == 2, For[b = 1, b <= 54, b++, 

     If[numlist[[b]] == in[[4]] || numlist[[b]] == in[[5]], 

      Which[pattern[[b]] == 6, bombflag = 1; mass = b, 

       pattern[[b]] < 6, numlist[[b]] = 0; pattern[[b]] = 0]]], 

    a == 3, For[b = 1, b <= 54, b++, 

     If[numlist[[b]] == in[[6]], 

      Which[pattern[[b]] == 6, bombflag = 1; mass = b, 

       pattern[[b]] < 6, numlist[[b]] = 0; pattern[[b]] = 0]]], 

    a == 4, For[b = 1, b <= 54, b++, 

     If[numlist[[b]] == in[[7]], 

      Which[pattern[[b]] == 6, bombflag = 1; mass = b, 

       pattern[[b]] < 6, numlist[[b]] = 0; pattern[[b]] = 0]]], 

    a == 5, For[b = 1, b <= 54, b++, 

     If[numlist[[b]] == in[[8]], 

      Which[pattern[[b]] == 6, bombflag = 1; mass = b, 

       pattern[[b]] < 6, numlist[[b]] = 0; pattern[[b]] = 0]]]];

   If[bombflag == 1, b = mass; 

    For[e = 1, e <= 1, e++, bomblist[[b]] = 1; 

     While[precount < postcount, 

      For[c = 1, c <= 54, c++, precount = postcount; 

       For[d = 1, d <= Length[nextlist[b]], d++, 

        If[pattern[[nextlist[b][[d]]]] == 6, 

         bomblist[[nextlist[b][[d]]]] = 1]];

       If[bomblist[[c]] == 1, 

        For[d = 1, d <= Length[nextlist[c]], d++, 

          If[pattern[[nextlist[c][[d]]]] == 6, 

           bomblist[[nextlist[c][[d]]]] = 1]];]]; 

      postcount = Count[bomblist, 1]]; kibaku = Table[0, 54]; 

     For[f = 1, f <= 54, f++, 

      If[bomblist[[f]] == 1, kibaku[[f]] = 1; pattern[[f]] = 0; 

       numlist[[f]] = 0; 

       For[g = 1, g <= Length[nextlist[f]], g++, 

        tonari = nextlist[f][[g]]; pattern[[tonari]] = 0; 

        kibaku[[tonari]] = 1]]];

     For[f = 1, f <= 54, f++, 

      If[kibaku[[f]] == 1 && bomblist[[f]] != 1 && numlist[[f]] > 0, 

       retu = QuotientRemainder[f, 6][[2]]; If[retu == 0, retu = 6];

       Which[retu == 1, k1 += 1; bombwait1[[k1]] = numlist[[f]], 

        retu == 2, k2 += 1; bombwait2[[k2]] = numlist[[f]], retu == 3,

         k3 += 1; bombwait3[[k3]] = numlist[[f]], retu == 4, k4 += 1; 

        bombwait4[[k4]] = numlist[[f]], retu == 5, k5 += 1; 

        bombwait5[[k5]] = numlist[[f]], retu == 6, k6 += 1; 

        bombwait6[[k6]] = numlist[[f]]];]];

     For[h = 1, h <= 54, h++, 

      If[kibaku[[h]] == 1 || bomblist[[h]] == 1, pattern[[h]] = 0; 

       numlist[[h]] = 0]]];];

   chainflag = 0; While[chainflag == 0, chainflag = 1;

    For[i = 48, i >= 1, i--, nullcount = 0; 

     If[pattern[[i]] != 0 , 

      For[j = i + 6, j <= 54, j = j + 6, 

       If[pattern[[j]] == 0, nullcount += 1]]]; 

     If[nullcount > 0, pattern[[i + 6*nullcount]] = pattern[[i]]; 

      numlist[[i + 6*nullcount]] = numlist[[i]]; pattern[[i]] = 0; 

      numlist[[i]] = 0]]; erase = Table[0, 54]; chaincount = 0; 

    For[i = 1, i <= 54, i++, 

     If[pattern[[i]] != 0 && pattern[[i]] < 6, 

      For[j = 1, j <= Length[nextlist[i]], j++, 

       If[pattern[[nextlist[i][[j]]]] == pattern[[i]], 

        erase[[nextlist[i][[j]]]] = 1; chainflag = 0; 

        If[chaincount == 0, chain += 1; chaincount = 1]; 

        If[numlist[[nextlist[i][[j]]]] != 0 && 

          bombcheck[[nextlist[i][[j]]]] == 0, 

         Which[QuotientRemainder[nextlist[i][[j]], 6][[2]] == 1, 

          k1 += 1; bombwait1[[k1]] = numlist[[nextlist[i][[j]]]]; 

          bombcheck[[nextlist[i][[j]]]] = 1, 

          QuotientRemainder[nextlist[i][[j]], 6][[2]] == 2, k2 += 1; 

          bombwait2[[k2]] = numlist[[nextlist[i][[j]]]]; 

          bombcheck[[nextlist[i][[j]]]] = 1, 

          QuotientRemainder[nextlist[i][[j]], 6][[2]] == 3, k3 += 1; 

          bombwait3[[k3]] = numlist[[nextlist[i][[j]]]]; 

          bombcheck[[nextlist[i][[j]]]] = 1, 

          QuotientRemainder[nextlist[i][[j]], 6][[2]] == 4, k4 += 1; 

          bombwait4[[k4]] = numlist[[nextlist[i][[j]]]]; 

          bombcheck[[nextlist[i][[j]]]] = 1, 

          QuotientRemainder[nextlist[i][[j]], 6][[2]] == 5, k5 += 1; 

          bombwait5[[k5]] = numlist[[nextlist[i][[j]]]]; 

          bombcheck[[nextlist[i][[j]]]] = 1, 

          QuotientRemainder[nextlist[i][[j]], 6][[2]] == 0, k6 += 1; 

          bombwait6[[k6]] = numlist[[nextlist[i][[j]]]]; 

          bombcheck[[nextlist[i][[j]]]] = 1]]]]]];

    bombcheck = Table[0, 54];

    

    For[i = 1, i <= 54, i++, 

     If[erase[[i]] == 1, pattern[[i]] = 0; numlist[[i]] = 0]]]; 

   If[chain > maxchain, maxchain = chain];

   doubletimes = 0;

   If[chain >= 5, doubletimes = chain - 4];

   For[n = 1, n <= doubletimes, n++, 

    Which[oddsupinitial == 0, 

     rowodds[[oddsup1]] += basicrowodds[[oddsup1]]; oddsupinitial = 1,

      oddsupinitial == 1, 

     rowodds[[oddsup2]] += basicrowodds[[oddsup2]]]]; 

   bottom = {0, 0, 0, 0, 0, 0};

   k = {k1, k2, k3, k4, k5, k6};

   l = {0, 0, 0, 0, 0, 0};

   bombwait = {bombwait1, bombwait2, bombwait3, bombwait4, bombwait5, 

     bombwait6};

   For[i = 1, i <= 6, i++, l[[i]] = 9; 

    For[j = 48 + i, j >= 1, j = j - 6, 

     Which[pattern[[j]] == 0, bottom[[i]] = l[[i]], pattern[[j]] != 0,

       l[[i]] = l[[i]] - 1]]];

   

   For[i = 1, i <= 6, i++, m = 0; 

    For[j = l[[i]] - k[[i]] + 1, j <= l[[i]], j++, m += 1; 

     pattern[[6*j + i - 6]] = 6; 

     numlist[[6*j + i - 6]] = bombwait[[i, m]]]]]; 

  eraseline = {0, 0, 0, 0, 0, 0};

  For[a = 1, a <= 6, a++, 

   Which[pattern[[48 + a]] == 0, eraseline[[a]] = 1, 

    pattern[[48 + a]] != 0, eraseline[[a]] = 0]];

  odds = eraseline[[1]]*rowodds[[1]] + eraseline[[2]]*rowodds[[2]] + 

    eraseline[[3]]*rowodds[[3]] + eraseline[[4]]*rowodds[[4]] + 

    eraseline[[5]]*rowodds[[5]] + eraseline[[6]]*rowodds[[6]];

  If[eraseline == {1, 1, 1, 1, 1, 1}, odds += 50]; totalodds += odds; 

  odds10 = odds*10; counter[[game, 1 + odds10]] += 1

  ; PO = totalodds/times; oddslist[[game, times]] = odds; 

  If[odds > maxodds, maxodds = odds];

  If[QuotientRemainder[times, 1000][[2]] == 0, 

   Print[{game, times, maxchain, odds, PO, maxodds}]]

  ;]; counter[[game, 1001]] = PO]; export = 

 Table[Table[0, 1065], dataset]; For[i = 1, i <= dataset, i++, 

 export[[i, 1]] = i;

 

 export[[i, 2]] = data[[1, i + 2, 5]]/10; 

 export[[i, 3]] = counter[[i, 1001]];

 For[j = 4, j <= 57, j++, export[[i, j]] = allpattern[[i, j - 3]]]; 

 over0 = over1 = over3 = over5 = over10 = over30 = over50 = 0;

 For[k = 1, k <= 10000, k++, hantei = oddslist[[i, k]]; 

  If[hantei > 0, over0 += 1]; If[hantei >= 1, over1 += 1]; 

  If[hantei >= 3, over3 += 1];

  If[hantei >= 5, over5 += 1];

  If[hantei >= 10, over10 += 1];

  If[hantei >= 30, over30 += 1];

  If[hantei >= 50, over50 += 1];];

 export[[i, 58]] = over50;

 export[[i, 59]] = over30;

 export[[i, 60]] = over10;

 export[[i, 61]] = over5;

 export[[i, 62]] = over3;

 export[[i, 63]] = over1;

 export[[i, 64]] = over0;

 For[j = 1, j <= 1000, j++, export[[i, j + 64]] = counter[[i, j]]];

 export[[i, 1065]] = 

  data[[1, i, 5]]]; Export["data.csv", export]; SystemOpen["data.csv"]

だいたい自身のやりたいアニマロッタ5の再現は以前の記事で紹介したので、

今度は数値的な解析などをして遊んでいる。

ちなみにチェーンボンバーは払い戻しが平均70%程度で、話にならない。

ビンゴファームも解析中で各パターン100000回検証をしているが、ペイアウト率は55%程度以上は確保されているが80%以上の組み合わせがなかなかない模様。

なにしろ緑カードパターンは17種類なので、組み合わせは17*16*15*14通りもあるので調べ上げるのに数十日レベルでかかるとみられている。

(カード配置パターンはその位置によって変わるので、17C4でもないし、重複はないので17^4でもない)

このあたりの話も話すとあまりに長くなるのでいずれ述べる…かもしれない


また、試験的に広告を貼るとかいう行為をやりだすことに。

ただ今度は、以前のように何度も日記のようなことを書くわけではない。

気が向いたときに面白そうなことを書くだけであろういんぷ


ちなみにプログラミングでいろいろ遊ぶのが大好きではあるが、工学系の学部にいるわけではない。わかる人にはわかると思うが、6年制の大学であり、試験や覚えることが山ほどあり、国家試験すら必要な学科である。

我はここでこういった理学系の知識を活かしつつ、社会と研究の橋渡しをいずれはしたいと考えている。入試の面接でもそう言ってきた。


また最近の動向もおいおい伝えていくが、例にもれず突然の失踪もありうるので注意。

一応このブログと広告がどんな感じにリンクして、どういう感じの統計になるかも見てみようと思っている。