跳至内容
返回

Fate Grand/Order 官方抽卡数据统计

发布于:  at  03:20 上午

没错,就是CBA池子沉了

结论:SR和SSR的出货概率符合官方公示的数据,只是我运气太差了

19年8月30日晚7点,坐标上海唐镇,马路上一弱智掏出手机领完3周年签到补贴300石头后开始抽卡,10S后抽卡结束,没有看到CBA。

我抽了,1秒十连有什么好说的,一定是阿B在后台动了出货概率!

我一定要调查清楚,不出货肯定不是我的原因。 这时候想起了Fgo的B站官网有个实时滚动的出货信息,打开Chrome,F12查看调试信息。 得到如下两个链接,

那么开始编写代码吧,Pycharm启动

跑了不知道多长时间以后,得到了169911条数据。 下面对这些数据进行一些统计

Ssr Record

Sr Record

其中SSR有41496条记录,而SR有128415,由于没有SR的记录,也没有礼装的记录,能做的就是计算出SR和SSR比值, 41496 ÷ 128415 ≈ 0.32313982011447260834014717906787

而官网给出的数据是 Official Data

四星从者和五星从者的出货比应该是1:3,和41496:128415非常接近,所以fgo的出货率理论上说并没有问题。 但是有了这些数据,不妨再做些其他有意识的事情,比如下表。

服务器数量所占比例
安卓bilibili服12510373.6%
安卓联运服71884.2%
ios服3762022.1%

附件

import requests
import sqlite3
import time

## 在进行查询请求前需要访问的一个链接
beforeQuery = "https://message.bilibili.com/api/tooltip/query.list.do"
## 查询抽卡情况的链接
summonDataUrl = "https://activity.biligame.com/board/list"
## 查询参数,游戏id
game_id = 112
## 查询参数游戏key
game_key = "a5f36e53ab3b0c41"
## 未知参数
rows = 31
## 查询参数payload
payload = {
    'game_id': game_id,
    'game_key': game_key,
    'rows': rows
}


class SummonData:
    # id 相当于所有玩家按照顺序抽中的编号
    # sname 服务器
    # rname 玩家昵称
    # info 抽中从者名称
    # star 从者等级
    def __init__(self, id, sname, rname, info, star):
        self._id = id
        self._sname = sname
        self._rname = rname
        self._info = info
        self._star = star

    def insert(self, cursor):
        if cursor:
            cursor.execute('select * from SUMMON where id=?', (self._id,))
            # 判断查询到的结果是否有重复
            query_result_counter = len(cursor.fetchall())
            # 如果没有重复则说明允许插入
            if query_result_counter == 0:
                cursor.execute(
                    """insert into SUMMON (id, sname, rname, info, star) values ({},"{}","{}","{}","{}")""".format(
                        self._id,
                        self._sname,
                        self._rname,
                        self._info,
                        self._star))
                print('Insert Done! {}, {}, {}, {}, {}'.format(self._id,
                                                               self._sname,
                                                               self._rname,
                                                               self._info,
                                                               self._star))
            else:
                print("重复记录")


def getDataFromNetWork():
    b = requests.get(beforeQuery)
    if b.json()['code'] == 0:
        r = requests.get(params=payload, url=summonDataUrl)
        return r.json()
    return {'code': 0, 'data': []}


def createTable():
    conn = sqlite3.connect('fgo.db')
    cursor = conn.cursor()
    print('Start Create Table')
    cursor.execute('''CREATE TABLE SUMMON
       (ID INT     NOT NULL,
       SNAME           CHAR(16)    NOT NULL,
       RNAME            CHAR(16)     NOT NULL,
       INFO        CHAR(16),
       STAR         CHAR(8));''')
    conn.commit()
    conn.close()


## createTable() # 创建完成后续无需再次调用


if __name__ == '__main__':
    conn = sqlite3.connect('fgo.db')
    cursor = conn.cursor()
    # 请求次数
    request_counter = 1
    # 请求间隔,同时是一个倒计时器, 单位秒(S)
    request_interval = 30
    while True:
        if request_interval == 30:
            content = getDataFromNetWork()
            if len(content['data']) > 0:
                for record in content['data']:
                    summondata = SummonData(int(record['id']), record['sname'], record['rname'], record['info'],
                                            record['star'])
                    summondata.insert(cursor)
                conn.commit()
            request_counter += 1
            request_interval = 0
        time.sleep(1)
        print("Next Request ETA: {}|Current Time: {}".format(30 - request_interval,
                                                                               time.asctime(
                                                                                   time.localtime(time.time()))))
        request_interval += 1

❓ 常见问题 (FAQ)

FGO 的官方抽卡概率是多少? +
根据官方公示,FGO 的基础抽卡概率如下: - **从者 (Servant)**:SSR (5星) 为 1%,SR (4星) 为 3%,R (3星) 为 40%。 - **概念礼装 (Craft Essence)**:SSR (5星) 为 4%,SR (4星) 为 12%,R (3星) 为 40%。 需要注意的是,这些比例是基础概率,实际单抽或十连抽中,特定 UP 角色的出货率会有所不同。

在以下平台分享此文章: