JesseM1024(讨论 | 贡献) (对卡片列表进行补充) |
JesseM1024(讨论 | 贡献) (修改了关于概率的数据,增加了模拟和期望) |
||
第245行: | 第245行: | ||
===掉卡机制详解=== | ===掉卡机制详解=== | ||
当玩家'''击杀'''<ref>这意味着被矿车处死与摔落处死的绝大多数生物无法掉落卡片。已经获取了玩家仇恨的僵尸猪灵无论如何死亡都会被判定为玩家击杀,故而会掉落卡片。</ref>生物后,有一定概率掉落卡片。其中击杀中立生物与怪物掉落概率为 5%,击杀动物掉落概率为 1%,击杀 BOSS 级怪物掉落概率为 2.5%。 | |||
当生物被判定为玩家击杀死亡后,系统根据概率首先决定是否掉落卡片。若判定掉落卡片,则接下来判定掉落卡片的稀有度。 | |||
{| class="wikitable" | |||
|+稀有度判定'''权重''': | |||
! | |||
!普通 | |||
!精良 | |||
!稀有 | |||
!神话 | |||
!传奇 | |||
|- | |||
|敌对生物 | |||
|10000 | |||
|1000 | |||
|250 | |||
|50 | |||
|1 | |||
|- | |||
|中立生物 | |||
|10000 | |||
|1000 | |||
|100 | |||
|0 | |||
|0 | |||
|- | |||
|友好生物 | |||
|5000 | |||
|250 | |||
|0 | |||
|0 | |||
|0 | |||
|- | |||
|Boss | |||
|0 | |||
|0 | |||
|0 | |||
|5000 | |||
|100 | |||
|} | |||
{| class="wikitable" | |||
|+稀有度判定约化'''概率''': | |||
! | |||
!普通 | |||
!精良 | |||
!稀有 | |||
!神话 | |||
!传奇 | |||
|- | |||
|敌对生物 | |||
|88.5% | |||
|8.85% | |||
|2.21% | |||
|0.442% | |||
|0.00885% | |||
|- | |||
|中立生物 | |||
|90.1% | |||
|9.01% | |||
|0.901% | |||
|0 | |||
|0 | |||
|- | |||
|友好生物 | |||
|95.2% | |||
|4.76% | |||
|0 | |||
|0 | |||
|0 | |||
|- | |||
|Boss | |||
|0 | |||
|0 | |||
|0 | |||
|98.0% | |||
|1.96% | |||
|} | |||
对于'''闪卡'''的判定,每次掉落卡片,有'''20%'''概率为闪卡。 | |||
== 蒙特卡洛模拟 == | |||
基于c++与mt19937随机数生成器。 | |||
对于抽取100000(10^5)张卡片10000次,模拟结果表明集齐普通卡片48次,集齐闪卡0次,全部集齐0次。 | |||
对于抽取1000000(10^6)张卡片1000次,模拟结果表明集齐普通卡片997次,集齐闪卡257次,全部集齐256次。 | |||
基于堆叠袭击塔的20敌对生物每秒的处死效率,要达到25%集齐概率,预期挂机时长10^6s,约为278小时,即11.57天。 | |||
一些额外参考数据: | |||
{| class="wikitable" | |||
|+抽卡-集齐模拟 | |||
!抽取卡片数 | |||
!全部集齐概率 | |||
|- | |||
|1M | |||
|0.25 | |||
|- | |||
|1.5M | |||
|0.55 | |||
|- | |||
|2M | |||
|0.83 | |||
|- | |||
|2.5M | |||
|0.94 | |||
|- | |||
|3M | |||
|0.99 | |||
|} | |||
模拟代码:<blockquote>#include <iostream> | |||
#include <vector> | |||
#include <chrono> | |||
#include <random> | |||
using namespace std; | |||
int main() { | |||
vector<int> card_arr; | |||
vector<int> card_arr_enchant; | |||
unsigned seed1 = std::chrono::system_clock::now().time_since_epoch().count(); | |||
unsigned random_num; | |||
mt19937 rnd(seed1); | |||
card_arr.clear(); | |||
card_arr_enchant.clear(); | |||
for (int i = 0; i < 126; ++i) { | |||
card_arr.push_back(0); | |||
card_arr_enchant.push_back(0); | |||
} | |||
vector<double> prob_dist_arr; | |||
prob_dist_arr.clear(); | |||
prob_dist_arr.push_back(10000./11301.); | |||
prob_dist_arr.push_back((10000.+1000.)/11301.); | |||
prob_dist_arr.push_back((10000.+1000+250)/11301.); | |||
prob_dist_arr.push_back((10000.+1000+250+50)/11301.); | |||
prob_dist_arr.push_back(1.); | |||
double enchant_prob = 0.2; | |||
double index = 0; | |||
int N = 10000; | |||
int card_draw = 100000; | |||
int common_coll_count = 0; | |||
int enchant_coll_count = 0; | |||
int all_coll_count = 0; | |||
int pos = 0; | |||
auto max_range = (double)rnd.max(); | |||
for (int i = 0; i < N; ++i) { | |||
for (int l = 0; l < 126; ++l) { | |||
card_arr.at(l) = 0; | |||
card_arr_enchant.at(l) = 0; | |||
} | |||
bool all_collected = true; | |||
bool all_enchant_collected = true; | |||
for (int j = 0; j < card_draw; ++j) { | |||
index = (double)rnd()/max_range; | |||
if (index < prob_dist_arr.at(0)){ | |||
pos = (int)((double)rnd()/max_range*55); | |||
} else if (index < prob_dist_arr.at(1)) { | |||
pos = 55+(int)(double(rnd())/max_range*31); | |||
} else if (index < prob_dist_arr.at(2)) { | |||
pos = 55+31+(int)(double(rnd())/max_range*19); | |||
} else if (index < prob_dist_arr.at(3)) { | |||
pos = 55+31+19+(int)(double(rnd())/max_range*12); | |||
} else { | |||
pos = 55+31+19+12+(int)(double(rnd())/max_range*9); | |||
} | |||
index = (double)rnd()/max_range; | |||
if (index < enchant_prob) { | |||
card_arr_enchant.at(pos) = card_arr_enchant.at(pos) + 1; | |||
} else { | |||
card_arr.at(pos) = card_arr.at(pos) + 1; | |||
} | |||
} | |||
for (int k = 0; k < 126; ++k) { | |||
if (card_arr.at(k) < 1) { | |||
all_collected = false; | |||
} | |||
if (card_arr_enchant.at(k) < 1) { | |||
all_enchant_collected = false; | |||
} | |||
} | |||
if (all_collected) { | |||
common_coll_count++; | |||
} | |||
if (all_enchant_collected) { | |||
enchant_coll_count++; | |||
} | |||
if (all_collected and all_enchant_collected) { | |||
all_coll_count ++; | |||
} | |||
if (i%100 == 0) { | |||
cout << i << endl; | |||
} | |||
} | |||
cout << "after " << N << " times of drawing " << card_draw << " cards" << endl; | |||
cout << "common_all = " << common_coll_count << endl; | |||
cout << "enchant_all = " << enchant_coll_count << endl; | |||
cout << "all = " << all_coll_count << endl; | |||
return 0; | |||
}</blockquote> | |||
[[分类:活动]] | [[分类:活动]] |
2023年1月26日 (四) 07:40的版本
2023 春节集卡活动,指举办于 2023 年(癸卯兔年)春节期间的围绕「珍奇系列」卡片收集的限时活动。该活动开始于 2023 年 1 月 25 日,为期一个月。
活动内容
在活动期间,玩家击杀任意生物(包括动物、中立生物、一般怪物以及 BOSS 级怪物)有一定概率获得「珍奇系列」卡片。玩家收集齐「珍奇系列」的所有卡片后即可获得丰富奖励。
卡片介绍
「珍奇系列」卡片包含 126 枚名称不同的卡片。除了「白色羊驼」以外,每个卡片都对应有一版闪卡。卡片分为不同的稀有度,从低到高依次是:普通(包含 55 枚卡片)、精良(包含 31 枚卡片)、稀有(包含 19 枚卡片)、神话(包含 12 枚卡片)、传说(包含 9 枚卡片)。
除稀有度以外,卡片上还会标记有卡片类型,包括:友好生物/物品、中立生物、敌对生物与 Boss。
以下内容通过表格对全部卡片进行罗列,并按照稀有度与卡片类型进行分类展示。
普通级卡片
卡片类型 | 卡片名称 | ||||||
---|---|---|---|---|---|---|---|
友好生物/物品 | 雪块 | 蝙蝠 | 村民 | 红狐 | 雪狐 | 鸡 | 驴 |
黑色马 | 褐色马 | 深枣红色马 | 深褐色马 | 淡栗色马 | 灰色马 | 白色马 | |
骡 | 黑猫 | 英国短毛猫 | 花猫 | 异色瞳猫 | 波斯猫 | 布偶猫 | |
红虎斑猫 | 暹罗猫 | 虎斑猫 | 双色猫 | 白猫 | 牛 | 白色青蛙 | |
黑色兔子 | 棕色兔子 | 金黄色兔子 | 椒盐色兔子 | 斑点色兔子 | 吐司色兔子 | 白色兔子 | |
绵羊 | 红色鹦鹉 | 蓝色鹦鹉 | 鳕鱼 | 鱿鱼 | 猪 | ||
中立生物 | 熊猫 | 体弱的熊猫 | 山羊 | 棕色羊驼 | 奶油色羊驼 | 灰色羊驼 | 白色羊驼 |
敌对生物 | 僵尸 | 溺尸 | 骷髅 | 苦力怕 | 掠夺者 | 末影人 | 蜘蛛 |
精良级卡片
卡片类型 | 卡片名称 | ||||||
---|---|---|---|---|---|---|---|
友好生物/物品 | 山羊角 | 炽足兽 | 豹猫 | 蝌蚪 | 橙色青蛙 | 绿色青蛙 | 绿色鹦鹉 |
青色鹦鹉 | 鲑鱼 | ||||||
中立生物 | 北极熊 | 海豚 | 狼 | 蜜蜂 | 懒惰的熊猫 | 忧郁的熊猫 | 顽皮的熊猫 |
好斗的熊猫 | 猪灵 | 僵尸猪灵 | |||||
敌对生物 | 蠹虫 | 恶魂 | 尸壳 | 僵尸村民 | 骷髅骑士 | 流浪者 | 烈焰人 |
卫道士 | 岩浆怪 | 疣猪兽 | 洞穴蜘蛛 | 猪灵蛮兵 |
稀有级卡片
卡片类型 | 卡片名称 | ||||||
---|---|---|---|---|---|---|---|
友好生物/物品 | 流浪商人 | 红色哞菇 | 灰色鹦鹉 | 热带鱼 | 河豚 | 发光鱿鱼 | |
中立生物 | 圣诞节箱子 | 铁傀儡 | 棕色熊猫 | 雪傀儡 | 行商羊驼 | ||
敌对生物 | 凋灵骷髅 | 唤魔者 | 末影螨 | 潜影贝 | 史莱姆 | 守卫者 | 蜘蛛骑士 |
神话级卡片
卡片类型 | 卡片名称 | ||||||
---|---|---|---|---|---|---|---|
友好生物/物品 | 海龟 | 骷髅马 | 僵尸马 | 悦灵 | |||
中立生物 | 青色美西螈 | 金色美西螈 | 粉色美西螈 | 棕色美西螈 | 大型圣诞节箱子 | ||
敌对生物 | 杀手兔 | 恼鬼 | 劫掠兽 |
传说级卡片
卡片类型 | 卡片名称 | ||||||
---|---|---|---|---|---|---|---|
友好生物/物品 | 棕色哞菇 | 烟花 | |||||
中立生物 | 蓝色美西螈 | ||||||
敌对生物 | 幻术师 | 巨型僵尸 | 远古守卫者 | ||||
Boss | 监守者 | 末影龙 | 凋零 |
掉卡机制详解
当玩家击杀[1]生物后,有一定概率掉落卡片。其中击杀中立生物与怪物掉落概率为 5%,击杀动物掉落概率为 1%,击杀 BOSS 级怪物掉落概率为 2.5%。
当生物被判定为玩家击杀死亡后,系统根据概率首先决定是否掉落卡片。若判定掉落卡片,则接下来判定掉落卡片的稀有度。
普通 | 精良 | 稀有 | 神话 | 传奇 | |
---|---|---|---|---|---|
敌对生物 | 10000 | 1000 | 250 | 50 | 1 |
中立生物 | 10000 | 1000 | 100 | 0 | 0 |
友好生物 | 5000 | 250 | 0 | 0 | 0 |
Boss | 0 | 0 | 0 | 5000 | 100 |
普通 | 精良 | 稀有 | 神话 | 传奇 | |
---|---|---|---|---|---|
敌对生物 | 88.5% | 8.85% | 2.21% | 0.442% | 0.00885% |
中立生物 | 90.1% | 9.01% | 0.901% | 0 | 0 |
友好生物 | 95.2% | 4.76% | 0 | 0 | 0 |
Boss | 0 | 0 | 0 | 98.0% | 1.96% |
对于闪卡的判定,每次掉落卡片,有20%概率为闪卡。
蒙特卡洛模拟
基于c++与mt19937随机数生成器。
对于抽取100000(10^5)张卡片10000次,模拟结果表明集齐普通卡片48次,集齐闪卡0次,全部集齐0次。
对于抽取1000000(10^6)张卡片1000次,模拟结果表明集齐普通卡片997次,集齐闪卡257次,全部集齐256次。
基于堆叠袭击塔的20敌对生物每秒的处死效率,要达到25%集齐概率,预期挂机时长10^6s,约为278小时,即11.57天。
一些额外参考数据:
抽取卡片数 | 全部集齐概率 |
---|---|
1M | 0.25 |
1.5M | 0.55 |
2M | 0.83 |
2.5M | 0.94 |
3M | 0.99 |
模拟代码:
#include <iostream>
- include <vector>
- include <chrono>
- include <random>
using namespace std;
int main() {
vector<int> card_arr;
vector<int> card_arr_enchant;
unsigned seed1 = std::chrono::system_clock::now().time_since_epoch().count();
unsigned random_num;
mt19937 rnd(seed1);
card_arr.clear();
card_arr_enchant.clear();
for (int i = 0; i < 126; ++i) {
card_arr.push_back(0);
card_arr_enchant.push_back(0);
}
vector<double> prob_dist_arr;
prob_dist_arr.clear();
prob_dist_arr.push_back(10000./11301.);
prob_dist_arr.push_back((10000.+1000.)/11301.);
prob_dist_arr.push_back((10000.+1000+250)/11301.);
prob_dist_arr.push_back((10000.+1000+250+50)/11301.);
prob_dist_arr.push_back(1.);
double enchant_prob = 0.2;
double index = 0;
int N = 10000;
int card_draw = 100000;
int common_coll_count = 0;
int enchant_coll_count = 0;
int all_coll_count = 0;
int pos = 0;
auto max_range = (double)rnd.max();
for (int i = 0; i < N; ++i) {
for (int l = 0; l < 126; ++l) {
card_arr.at(l) = 0;
card_arr_enchant.at(l) = 0;
}
bool all_collected = true;
bool all_enchant_collected = true;
for (int j = 0; j < card_draw; ++j) {
index = (double)rnd()/max_range;
if (index < prob_dist_arr.at(0)){
pos = (int)((double)rnd()/max_range*55);
} else if (index < prob_dist_arr.at(1)) {
pos = 55+(int)(double(rnd())/max_range*31);
} else if (index < prob_dist_arr.at(2)) {
pos = 55+31+(int)(double(rnd())/max_range*19);
} else if (index < prob_dist_arr.at(3)) {
pos = 55+31+19+(int)(double(rnd())/max_range*12);
} else {
pos = 55+31+19+12+(int)(double(rnd())/max_range*9);
}
index = (double)rnd()/max_range;
if (index < enchant_prob) {
card_arr_enchant.at(pos) = card_arr_enchant.at(pos) + 1;
} else {
card_arr.at(pos) = card_arr.at(pos) + 1;
}
}
for (int k = 0; k < 126; ++k) {
if (card_arr.at(k) < 1) {
all_collected = false;
}
if (card_arr_enchant.at(k) < 1) {
all_enchant_collected = false;
}
}
if (all_collected) {
common_coll_count++;
}
if (all_enchant_collected) {
enchant_coll_count++;
}
if (all_collected and all_enchant_collected) {
all_coll_count ++;
}
if (i%100 == 0) {
cout << i << endl;
}
}
cout << "after " << N << " times of drawing " << card_draw << " cards" << endl;
cout << "common_all = " << common_coll_count << endl;
cout << "enchant_all = " << enchant_coll_count << endl;
cout << "all = " << all_coll_count << endl;
return 0;
}
- ↑ 这意味着被矿车处死与摔落处死的绝大多数生物无法掉落卡片。已经获取了玩家仇恨的僵尸猪灵无论如何死亡都会被判定为玩家击杀,故而会掉落卡片。