ガチャフルコンプを目指すための軍資金を調べるツールを作ってみました
皆様、こんにちは。
もうめっきりガチャに課金しなくなった勢、いぬころんです。
今回はガチャフルコンプ軍資金調査のプログラムを
Pythonで作ってみました。(※文法忘れまくってる件)
是非ご活用くださいませ^^
経緯
先日、プロセカ友達の友人がプロセカウエハースを購入していたのですが、
このウエハースってフルコンプしたらどれくらいの金額が必要なのか?と
なんとなく思い立ってしまったので、久々にPythonで調査!
あくまで確率論にはなるのですが、
ある程度平均値を取ることはできようかと思うので、
これからガチャをされる方はご参考くださいませ。
ファイルダウンロードはこちら
仕様
今回は「経緯」でも紹介したように、ウエハースに入っているトレカの
フルコンプにかかる金額調査となっています。
よって仕様は以下のとおりです。
出来ること
①全部で何種類のカードが有るか?
②1パックを購入するのにいくらかかるか?
以上の2つを指定して、全てをゲットするためにいくらかかるのかを
自動計算してくれます。
注意点
今回のツールでは以下のような前提が存在します。
①1パックに入っているトレカは必ず1枚。
②全てのカードについて、出てくる確率は同様に確からしい。
(※10種類のカードが有るなら、どのカードもでる確率は10%)
③表示される金額には単純に「はじめに指定した金額×買ったパック数」
(※はじめに入力した金額が税別なら、消費税を足して見積もるべし!)
ソースコード
ソースコードは以下のとおりです。
今回は比較的短いので関数定義などをしてません。
import random
while True:
# 種類数を設定
try:
serial = int(input("全部で何種類ですか?→"))
except:
print("数字を入れてください")
continue
break
while True:
# 単価を設定
try:
cash = int(input("何円ですか?→"))
except:
print("数字を入れてください")
continue
break
times = 0 # 調査回数
openresult = [] # 一回の調査で開けたパック数のリスト
cashresult = [] # 一回の調査でかかった金額のリスト
while True: # 「もう一度やってみますか」でNOを選択するまで繰り返し
alllist = list(range(serial)) # 「0~入力した数-1」の整数連番のリスト・表示の際に調整
times = times + 1
openpack = 0 # その調査で開けたパック数
# print(alllist) #初期リストのテスト表示用
while True:
openpack = openpack + 1
getindex = random.randint(0, serial - 1) # 全体からランダムに数字を抽出
print(str(openpack) + "個目のパック:" + str(getindex + 1) + "番をゲット!")
if alllist[getindex] == str("get"):
print("かぶりです!")
continue
print("初ゲットです!")
# 全体のリストから今回ゲットした番号のものを"get"に変更
# 同じものが次回以降で出てくる可能性があるため、リストからの削除はNG
alllist[getindex] = "get"
# print(alllist) #引いた結果更新されたリストのチェック用
if alllist.count("get") == serial: # リストの全ての要素が"get"になったらフルコンプしたとしてループ抜け
print("フルコンプしました!")
break
print("フルコンプまで" + str(openpack) + "このパックを開けました!")
print("フルコンプにかかった金額は" + str(openpack * cash) + "円です\(^o^)/")
# 調査内で開けた回数をリストに追加
openresult.append(openpack)
# 調査内でかかった金額をリストに追加
cashresult.append(openpack * cash)
retry = input("もう一回やりますか?(何も入れずにEntar>終了 それ以外はもう一回)")
if retry == "":
break
openindex = 0
opensum = 0
while True:
opensum = opensum + openresult[openindex]
openindex = openindex + 1
if openindex == len(openresult):
break
openave = opensum / len(openresult)
cashindex = 0
cashsum = 0
while True:
cashsum = cashsum + cashresult[cashindex]
cashindex = cashindex + 1
if cashindex == len(cashresult):
break
cashave = cashsum / len(cashresult)
print("今回の調査回数:" + str(times))
print("平均の購入パック数:" + str(round(openave,2)) + "個")
print("平均の購入金額:" + str(round(cashave,2)) + "円")
print("今回の調査で開けたパック数の最小数は"+str(min(openresult))+":最大数は"+str(max(openresult))+"でした。")
print("今回の調査でかかった金額の最小額は"+str(min(cashresult))+"円:最大額は"+str(max(cashresult))+"円でした。")
input("enterで終了します。")
実行画面サンプル
※初期段階のものなので後にいくらか追加機能が加わっています
記事をご覧頂きまして、まことにありがとうございます。 「缶コーヒーの差し入れ」くらいの気持ちでサポートをしてくれされば とても励みになります。