※ 引述《siscon (e-diot)》之銘言:
: 影片原標題
: 終於露出馬腳?網易遊戲概率欺詐或成實錘,明日之後近二十萬充值證明概率不合理,“
: 網易概率門”或成網游史上第一次被實錘的概率欺詐!
: https://www.bilibili.com/video/BV1hy4y1H7rz
: 竟然有遊戲公司敢做出機率做假這種事
: 不知道該說遊戲公司可怕
總之結論就是沒保底不要玩,
你認為幾抽內一定要中,那就是保底啊...
回到實作面好了,今天我說抽卡機率1%,
然後我的 server code (pseudo-code) 這樣寫
global int wins, total_roll;
bool is_win()
{
total_roll ++; // 抽卡總數+1
// 目前已中獎的總機率
float curr_win_rate = (float)wins / total_roll;
if ( curr_win_rate > 5 ) // omg, 機率>5%?
return false; // 大失血不能再讓人中了
// 省效率不查機率表,直接用系統時間(millisecond)
// 除100的餘數當機率
if (get_millisecond() % 100 == 1)
{
wins++;
return true;
}
else
return false;
}
然後某個人要抽的時候正好是前面幾萬抽歐氣大爆發,
中獎機率超過 5% 所以進入保護碼再也抽不到了,
玩家去告,遊戲公司說請去看我們的紀錄,
不但超過 1%,還高達 4.x% 勒,
怎麼辦? 先不說法院到底有沒有人會去看 code,
妳真的說這算非獨立機率,
那實體的抽獎活動不也都是這樣嗎?
再來一個更蠢的
bool is_win()
{
// 取地目前時間的秒數值
int second = get_current_sec_in_min();
if (second == 59)
return true;
else
return false;
}
懶惰又想減少 server loading 的工程師說,
本來是 1%,但是我們大放送變 1.67%! 爽吧!
然後某個雖小的玩家從 0:00:00 開抽,
每隔 2 秒抽一次,
然後永遠都不會有 59 秒的時機,
因為 59 不是 2 的倍數! (爆笑XD)
這種的你要怎麼告的贏?
說人家沒有用 network security level 的亂數演算法?
(ps:C標準的的rand()沒有達到那種安全等級喔)
人家有保證過這點嗎?
如果遊戲公司真的願意做到這麼完美,
那直接給個保底不就好? 對 server 負擔還比較輕勒
勸世文,看到沒保底就要預設那是在騙人的,
不要再玩了啦