餃子を食べるとき、何をつけますか?

pythonについての質問です。



架空のソーシャルゲームのSSRを例に、プレイヤーが経験することになる課金地獄をpythonプログラムによりシミュレーションする。このゲームのガチャは1度あたり500円課金が必要である。また、SSRの出現確率は1%で一定であり、過去に見られた詐欺的な確率変動は行っていないものとする。



__________________________________________________________________

import random


is_wins =[] #当たったか外れたかのリスト
for i in range(10000): # 10000人のユーザーにガチャを引かせる。大きくすると精度が上がる。
is_win=False
for j in range(100):
if random.randint(1,100)== 1: # 1-100の乱数が1になる確率は1%でSRと同じ
is_win=True
break
is_wins.append(is_win)


win=is_wins.count(True)
lose=is_wins.count(False)
rate=100 * win / (win + lose)
s = "Winner: {0}, Loser: {1}, Rate:{2}%".format(win, lose, rate)
print(s)

_________________________________________________________________




問4
このSSRを得るのに、一体何回ガチャを引けばよいのか?期待值、50, 80, 90%の人が当
たりを引くのに必要な回数を求めよ。理論値はそれぞれ100, 69, 161, 230回である。ま
た、SSRを引くのに最大いくら課金したか?これは変動が大きいが、crazyな額であること
には変わりがない。
ヒント :すべてのユーザーにSSRが当たるまでガチャを引かせ、その回数を記録する。こ
れの平均値、課金額が少ない順から50, 80、90%のユーザーがガチャを引いた回数を考え
ればよい。


こちらの問4の解き方が分かりません。
ご回答お願いしますm(_ _)m

A 回答 (1件)

import random



Number = 10000

count = 0
members =[0] * Number
while(0 in members):
  count += 1
  for i in range(Number):
    if members[i] == 0:
      if random.randint(1,100)== 1:
        members[i] = count

print("期待値 : %d" % int(sum(members)/Number) )
result = sorted(members)

print("50%%が当たった回数 : %d" % result[int(Number * 0.5) - 1] )
print("80%%が当たった回数 : %d" % result[int(Number * 0.8) - 1] )
print("90%%が当たった回数 : %d" % result[int(Number * 0.9) - 1] )
print("全員が当たった回数 : %d" % result[Number - 1] )
print("最大課金 : %d円" % (result[Number - 1] * 500) )
    • good
    • 0
この回答へのお礼

わかりやすい回答ありがとうございました!
おかげさまで解決できました!

お礼日時:2018/06/26 17:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報