1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ガチャ的なアレの仕組み

Posted at

また運営が絞ってるよ。。。

「確率アップ」 とか大々的に宣伝してるくせに、10連回しても目的のキャラが出ない誇大広告なんじゃないかと思うようなゴミみたいなガチャってよくあるよね。
今回はそれの仕組みを簡単に書いちゃうよ。
※全部のアプリがそうやってるわけではないので、あくまで参考レベルに

確率について

キャラによって排出量が変わるみたいな記述がありますが、アレの仕組みについてですが、以下のようにキャラに対してナンバリングを行います。

例:キャラ数:4

No キャラ名 レア度 確率
0 キャラクターA SSR 10%
1 キャラクターB SR 20%
2 キャラクターB SR
3 キャラクターC R 30%
4 キャラクターC R
5 キャラクターC R
6 キャラクターD N 40%
7 キャラクターD N
8 キャラクターD N
9 キャラクターD N

排出量(%)については、キャラの総数 / 全体数 * 100 で割り出してます。
レアキャラの数が増えた場合、確率調整のためにモブキャラも大量にマシマシしてお届けいたします。

キャラの決定について

こっからはプログラムの話で、どうやって上記の表からキャラを決めるかって話です。
基本的にはプログラム標準であったりするランダム数字を算出するメソッドを呼び出して、その結果によってキャラを決定します。

決定の仕方の例でいうと。。。

  • 0~999までの数から1つを算出して下X桁を見て決定する(0~9だと偏りが出そうなので少し広めのレンジで算出して決める
  • 100~99999までの数から1つ算出して、全体数で割った際の余りの数を見て決定する
  • ランダム数字を2つ算出して、レア度とキャラのListから割り出す

最後のケースですが、以下のようにレア度のリストとキャラリストを分けて算出する感じです。

レア用テーブル

No レア度 確率
0~9 SSR 10%
10~29 SR 20%
30~59 SR 20%
60~99 SR 20%

キャラ用テーブル(例:SSRのみ)

レア度の中で、キャラを更に絞り込む調整ができる
レア度ごとにリストが組めるので、保守とか使い回しができて楽かも

No キャラ名
0~9 キャラクターA
10~39 キャラクターB
40~69 キャラクターC
70~99 キャラクターD

と、まぁこんな感じで。。。

仕組み的には大体こんな感じですが 10連すると必ずSR以上が1体出る みたいなアレがありますが、アレも結局のところ10回目だけランダムで算出する数字を絞るってだけで割と簡単に実現できます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?