デレステのガシャは確率操作しているか確認してみる

みなさんデレステやってますか？
私は2016/07/30以降、毎日の納税を全て記録しています。
私が金を支払っている唯二つのスマホアプリのうちのひとつです(もうひとつはまんがライフGIGA)。
![01.png](https://qiita-image-store.s3.amazonaws.com/0/26088/9167ec80-b0c3-2345-d59a-4d395d824e46.png)

ところでソシャゲではよく確率操作とかの話を聞きますよね。
[時間帯で出現率が変わる](http://nlab.itmedia.co.jp/nl/articles/1809/19/news103.html)、[表記不足による有利誤認](http://nlab.itmedia.co.jp/nl/articles/1601/08/news159.html)、[詫びソースコード](http://nlab.itmedia.co.jp/nl/articles/1711/16/news121.html)など、明らかになったものだけでも枚挙にいとまはありません。
話題にも上がらないようなマイナーゲーを含めると、もっと多くの不正が存在していることは間違いないでしょう。

あと重課金者ほど確率が下がるってのがあったような気がするんだけど確定情報は見つけられなかった。


デレステにも同じようなことはあるのでしょうか？
確率とかもはや全部忘れたので勉強がてら調べてみようと思います。

計算にはPythonを使います。
PHPにも[統計関数はある](http://php.net/manual/ja/book.stats.php)のですが、さすがにNumPyには敵わないのと、あとWindows版PHP7.3で何故か動かなかったので今回はスルー。

# デレステのガシャは確率操作しているか？

## 集計

どう考えてもExcel(私有してないのでLibreOffice Calc)でそのまま集計するのが一番手っ取り早いけど気にしない。

とりあえずはtxtに書き出します。
単純にレア度の列をコピペしただけです。
![02.png](https://qiita-image-store.s3.amazonaws.com/0/26088/009ff4db-cca6-d7f4-ed2e-a0372467c5d4.png)

なお2017/06/29に出現確率が変更されたので、集計はそれ以降を使用します。
　2017/06/29まで：SSR1.5%、SR10%、R88.5%
　それ以降：SSR3%、SR10%、R87%

あとはさくっとSSR数を数えます。

```python
import re

path = 'path\to\デレステ.txt';

with open(path, "r",  encoding="utf_8_sig") as f:
    data_all = f.readlines()

data_ssr = [s for s in data_all if re.match('^SSR', s)]

print ("全数:", len(data_all))
print ("SSR:", len(data_ssr))
```

![03.png](https://qiita-image-store.s3.amazonaws.com/0/26088/2c334af5-353a-3cfa-797a-786246738984.png)

納税回数858回、うちSSRは22枚でした。


## 期待値

必要なのはSSRとそれ以外なので、求める値は成功率3%の二項分布と考えてよいでしょう。
期待値はどの程度でしょう。
試行回数1万回のヒストグラムはこのようになります。

```python
import numpy as np
import matplotlib.pyplot as plt

x = np.random.binomial(858, 0.03, 10000)
plt.hist(x)
```

![04.png](https://qiita-image-store.s3.amazonaws.com/0/26088/3f45dde9-388b-aea6-c662-012cc88425e4.png)

たったこれだけでそれっぽいグラフまで作ってくれるのは便利すぎる。
25回くらいが最頻値のようですね。

まあ期待値はグラフとか出さなくても858*0.03=25.74枚なわけですが。

22枚は期待値より少ないですね。
これは操作されているのではないでしょうか？
検定してみましょう。


## 二項検定

[手動で計算する方法](https://qiita.com/tibigame/items/3d1439d6af46bc01f56a)もあるみたいですが、実は[いきなり答えを出す関数](https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.binom_test.html)があるので、手っ取り早くそちらを使います。

```python
import scipy.stats as stats
print (stats.binom_test(22, 858, 0.03))
```

`binom_test`は第一引数に成功回数、第二引数に試行回数、第三引数に成功率を入れると、その[P値](https://bellcurve.jp/statistics/glossary/2172.html)、すなわちその結果が起こりそうな割合を返してくれます。
これが0.05以下であれば[不自然なことが起こっている](https://qiita.com/fujiharuka/items/8db3bd70304855673578#%E7%B0%A1%E5%8D%98%E3%81%AA%E4%BB%AE%E8%AA%AC%E6%A4%9C%E5%AE%9A%E3%81%AE%E7%B7%B4%E7%BF%92)と判断できることになります。


![05.png](https://qiita-image-store.s3.amazonaws.com/0/26088/bb7d81db-3f88-a92c-50d9-8c0537f654db.png)

結果は0.5472682333438045。
確率操作どころか余裕ぶちかましで全く何一つ問題ないという結果になりました。


## フェス期間の集計

時折SSR出現率が普段の倍の6%になるシンデレラフェスというイベントがあります。
無償石は普段から使わずに取っておいてフェスで回すのが効率がいい、ということです。
もちろんその結果も記録してあります。

![06.png](https://qiita-image-store.s3.amazonaws.com/0/26088/044c8a87-2bfb-83eb-6d70-5c6a98385f1c.png)

2017/06/29以降に行われたフェスの集計結果は以下のとおり。

![07.png](https://qiita-image-store.s3.amazonaws.com/0/26088/8e60e290-51e7-3b2b-f70d-8409409225fe.png)

全枚数1156枚、うちSSRが68枚です。
ちなみにこの1156枚について、お金が絡んだものは100枚程度です。
無課金でも1.5年で1000枚は回せるということです。

成功率0.06で1156枚引いたときの期待値は69.36枚なので、もうこれは調べるまでも無く完全に真ん中ですね。

```python
import scipy.stats as stats
print (stats.binom_test(68, 1156, 0.06))
```

![08.png](https://qiita-image-store.s3.amazonaws.com/0/26088/852d12fe-6c20-7af7-ac25-38807bae059b.png)

結果は0.9505813553931032。
もはや疑う余地すらありません。

# 結論

納税、フェス期間共に期待値よりは低めですが、全くの想定範囲内です。
少なくとも私のガシャについては確率操作はされていない、あるいは少なくとも悟られるような確率操作はされていない、という結果になりました。


# 課金について

デレステは、普通にプレイするだけであれば課金は全く不要なゲームです。
一年弱で無償石が天井まで貯まるので、貯めておいてフェスで回してを繰り返せば、戦力的にも十分な程度のSSRは確保できます。

私は半年ほど無課金プレイした上で、金を支払う価値があると判断したので支払っていますが、それでも鉄の意志で毎日の納税とスペシャルガシャセットだけに留めています。
限定一点狙いなんて阿呆なことでもしない限り、実のところ課金する必要は薄いです。
課金するなら節度を持って課金しましょう。

一点狙いとは？
何でもいいからSSRを引きたい、なら3%ですが、SSRは現状既に100枚以上あるので、特定のSSRが欲しいというならこんな確率になります。

![09.png](https://qiita-image-store.s3.amazonaws.com/0/26088/c5584f5c-b09b-3279-1c41-ba552a5897fd.png)


狙うとどうなるかというと[1ありす](https://imascg-slstage-wiki.gamerch.com/%E7%94%A8%E8%AA%9E%E9%9B%86%EF%BC%88%E8%8B%B1%E6%95%B0%EF%BC%89#1_alice)になります。
今は天井があるためここまで極端な値にはなりませんが、それでも真面目に狙うような額ではありません。
絶対にやめましょう。
一点狙いダメ。ゼッタイ。


# まとめ

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">あっあっあっ<br> <a href="https://twitter.com/hashtag/%E3%83%87%E3%83%AC%E3%82%B9%E3%83%86?src=hash&amp;ref_src=twsrc%5Etfw">#デレステ</a> <a href="https://t.co/jMgfstlRcq">pic.twitter.com/jMgfstlRcq</a></p>&mdash; ラナ・クアール (@rana_kualu) <a href="https://twitter.com/rana_kualu/status/1077000911262646272?ref_src=twsrc%5Etfw">2018年12月24日</a></blockquote>
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">ありがとうございますありがとうございます<br> <a href="https://twitter.com/hashtag/%E3%83%87%E3%83%AC%E3%82%B9%E3%83%86?src=hash&amp;ref_src=twsrc%5Etfw">#デレステ</a> <a href="https://t.co/VcdMoTaOkD">pic.twitter.com/VcdMoTaOkD</a></p>&mdash; ラナ・クアール (@rana_kualu) <a href="https://twitter.com/rana_kualu/status/1077001036001247232?ref_src=twsrc%5Etfw">2018年12月24日</a></blockquote>
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">あっあっあっ <a href="https://t.co/I2SSzrKvMx">pic.twitter.com/I2SSzrKvMx</a></p>&mdash; ラナ・クアール (@rana_kualu) <a href="https://twitter.com/rana_kualu/status/1077003340318334977?ref_src=twsrc%5Etfw">2018年12月24日</a></blockquote>
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">素敵なクリスマスプレゼントありがとうございます！！<a href="https://twitter.com/hashtag/%E3%83%87%E3%83%AC%E3%82%B9%E3%83%86?src=hash&amp;ref_src=twsrc%5Etfw">#デレステ</a> <a href="https://t.co/PMzJ5SZuAn">pic.twitter.com/PMzJ5SZuAn</a></p>&mdash; ラナ・クアール (@rana_kualu) <a href="https://twitter.com/rana_kualu/status/1077004946539655168?ref_src=twsrc%5Etfw">2018年12月24日</a></blockquote>
イヴにサンタクロースちゃん限定一点狙いを一発で引いてしまい確率も期待値もどうでもよくなったの図