ソーシャルゲーム(ネットでやるゲーム)は、だいたい「やるだけなら無料」なのですが、
もちろん、それでは製作サイドはお金が得られません。
(むしろ、費用が掛かっているので、マイナス)
製作サイドからすれば、「ゲームはして欲しい。けど、お金は欲しい。」のジレンマがあります(´・ω・`)
そこで、お金を回収するために、課金をします。
いわゆる「ガチャ」です。
「ガチャ」を回すと、弱いキャラから強いキャラまで、ランダムで引くことができるのがよくあるパターンだと思います。
そこで、この「ガチャ」、どれくらいで当たるものなのか、シミュレーションしてみました。
ガチャの確率
当たり前ですが、強いキャラ(=レア)は、確率が低く設定されています。
☆6とかSSRとか言いますね。だいたい表記されているのは「0.5%~2.0%」な模様。
「0.5%」とか「2.0%」って確率はなに?
少しだけ数学してみます。
この数字は、1回ガチャを引いたら、「0.5%」の確率で、強いキャラを引くって意味です。
ここでポイントなのは、1回ガチャを引いたら「0.5%」だから、「100% ÷ 0.5%」で200回引けば、当たるわけではありません。
毎回引くたびに、「0.5%」の確率です。
そんな説明どうでもいいから、シミュレーションはどうだったのさ??
すみませんでした。それではシミュレーションの内容と結果です。
シミュレーションの方法
- 乱数を用いて、抽選を行う
- 当たり(0.5%以内)が出るまで繰り返してみる
- さらに、これを10,000回繰り返して、どれくらい回すと当たるのかを調べてみる
シミュレーションの結果
サマリ
「200回引けば、当たるわけではありません」とか書きながら、200回ぐらいやれば、7割ぐらいの人は当たりそう(;´Д`)
ただし、標準偏差がでかすぎるので、やはり200回は信用できません。あしからず。
ちなみに、10,000回の繰り返しを10,000人がトライに読み替えると・・・、
1回引くだけで当たる人が、10,000人中46人(0.46%)
10回以内に当たる人が、10,000人中495人(4.95%)
意外と当たる模様。
当たるまでの平均回数 | 201.234 |
中央値 | 138 |
最小値 | 1 |
最大値 | 1,775 |
標準偏差 | 204.0542 |
10,000回当たるまでやってみたグラフ
赤線が、1回あたりの当たるまで平均です。
見ておわかりだと思いますが、1回で当たってみたり、当たるまで1,775回かかってみたり・・・。ま、救済のために上限はあるのかもだけど。
縦軸:1試行あたりの当たるまでの回数
横軸:何回目の試行か
ヒストグラムと当たるまでの割合
縦棒が、当たるまで回数の分布。
赤線が、累計当たるまでの割合。
意外と早い段階で当たっている模様。200回ぐらいやると、7割ぐらいの人は当たりそう。1000回やれば、99%の人が当たりそう。かな。
縦軸(左):横軸別の分布
縦軸(右):分布に対する累計の割合
横軸:1試行あたりで当たった時の回数
このシミュレーションに使ったJavaソース
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 26 27 | import java.util.Random; public class GatyaTest { private static final double PRIZE_PER = 0.005; public static void main(String[] args) { GatyaTest test = new GatyaTest(); for(int i=0 ; i<10000 ; i++) { System.out.println(test.drawLot()); } } public int drawLot() { boolean isPrize =false; int counter = 0; Random rnd = new Random(); while(isPrize == false) { counter++; if(rnd.nextDouble() <= PRIZE_PER) { isPrize = true; } } return counter; } } |