999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

運用閾值逼近解決游戲中的變動式隨機概率問題

2018-01-31 12:00:26吳佳驊
科教導刊·電子版 2017年34期
關鍵詞:游戲

吳佳驊

摘 要 游戲的爆率影響著游戲的用戶體驗,使用變動式隨機概率能提供較好的用戶體驗,本文運用閾值逼近的方法給出了一種變動式隨機概率的實現方式。

關鍵詞 游戲 隨機概率 閾值逼近

中圖分類號:TN948.7 文獻標識碼:A

如今的信息時代下,在人們的日常休閑娛樂方式中,游戲已經成為相當普遍的一個選擇。各種游戲層出不窮,市場競爭也相當激烈。從最近的調查結果來看,游戲的良好用戶體驗是一款游戲留住用戶的根本。除了游戲本身的設計公平性和趣味性之外,游戲中的爆率也是很重要的一環。游戲如果使用固定爆率則等于把用戶完全扔進了看臉拼人品的世界,很不利于使用戶擁有良好體驗。所以如何設計實現變動式的隨機爆率,是游戲設計中需要考慮的一環。閾值逼近方法就是適合解決變動式隨機爆率的一種方式。

所謂閾值逼近方法,其核心就是設定一個基本的閾值,然后一次一次向閾值逼近的過程。在逼近過程中得到逐漸趨近于閾值的幾率。比如原始幾率10%,閾值為50%,一次事件發生后該幾率增加1%,下一次事件發生時的實際幾率為11%,依此類推,直到成為50%的不變值。

游戲中爆率類的幾率性事件很多,除了基本的掉裝備材料的爆率之外,卡牌類的抽卡概率,游戲技能的觸發概率,游戲角色暴擊概率,都屬于這類事件。

以游戲技能的觸發概率為例,比如某游戲中的技能A有30%的額外傷害概率,可以設置初始概率為5%,設置閾值為60%,如果當次未觸發,則下次使用時概率乘以2,如果再次沒有觸發,則繼續該算法計算,最終達到60%。如果某次觸發了技能A的額外傷害,則將下一次的概率重置為初始概率。如此一來,最糟情況下3次未觸發之后就擁有60%的高概率,比恒定30%的概率用戶體驗要好很多。

為了使這個概率變動模型能夠復用,可以考慮在程序中將其寫成類,

class Randomrate{

double basicrate,rate,toprate,step;

public Randomrate(double br,double t,double s) {

basicrate = br; rate = basicrate; toprate = t; step = s;

}

public double getrate() {

return rate;

}

public void increaserate() {

if (rate == toprate) return ;

rate *= step;

if (rate >= toprate) rate = toprate;

}

public void initrate(bool ifhandle) {

if(ifhandle) rate = basicrate;

}

}

其中,basicrate是初始概率,rate是實際概率,toprate是閾值,step是實際概率的變動步進值。

如此這般,在技能A第一次使用前即可建立Randomrate的對象one,之后只需要每一次調用one對象的getrate()方法即可獲得當次技能A的額外傷害概率,將每一次額外傷害發生與否的布爾值作為參數傳入one對象的initrate()方法,如果剛剛發生過額外傷害,則下一次的傷害概率就會還原為原始的basicrate的值。為了節省游戲資源,可以在進入戰斗場景時建立對象one,而在離開戰斗場景時釋放對象one,下一次進入時再重新建立。

除此之外,閾值逼近還有另外一種形式,即得到一個逐步縮小的隨機區間,從而變相地獲得高概率。

這種形式用來解決卡牌類游戲的高級卡抽牌概率最為合適,因為這類游戲的用戶通常希望在若干抽之后就必定能獲得一張高級卡。

這種形式下的概率實現,可以使用隨機數,比如概率15%,實際操作中可以看做是隨機取得1-10000之間某個數,若取得的數是1-150,則使隨機事件發生。將其寫成類,

class Randomrate2{

int min,max,maxnow,top,step;

public Randomrate2(int mi, int ma, int t,int s) {

min = mi; max = ma; maxnow = max; top = t; step=s;

}

public int getmaxnow() {

return maxnow;

}

public int getmin() {

return min;

}

public void discreasemax() {

if (maxnow <= top) return;

maxnow -= step;

if (maxnow <= top) maxnow = top;

}

public void initmaxnow(bool ifhander) {

if (ifhander) maxnow = max;

}

}

其中,min是隨機范圍的下限值,max是初始上限值,maxnow是實際上限值,top是閾值,step是實際上限值變動的步進值。

如此這般,當用戶第一次抽卡時建立Randomrate2類型的對象one,抽卡時按one.getmin()--one.getmaxnow()這個范圍獲得隨機值,如果不中,則執行one的discreasemax()方法減小實際上限值maxnow,下一次抽卡時的隨機范圍便降低了,也就等于變相增大的發生概率。實際上限值減小到閾值top時將保持不變。每一次抽到高級卡與否的結果會作為參數傳入one的initmaxnow()中,若某次用戶抽中了高級卡,則實際上限值maxnow會重置為初始上限值max。

在實際操作中,如想盡快達到閾值,可以設置較大的數為step,也可以把步進方式改為除法或其他數學運算,比如2分法。如果想要確保若干次后必定可以抽到高級卡,可以將閾值設定為min或者有效區間的上限值。endprint

猜你喜歡
游戲
做游戲
夜間游戲
游戲
送信游戲
數獨游戲
瘋狂的游戲
飛碟探索(2016年11期)2016-11-14 19:34:47
爆笑游戲
第八章直接逃出游戲
小學科學(2015年7期)2015-07-29 22:29:00
第八章 直接逃出游戲
小學科學(2015年6期)2015-07-01 14:30:14
游戲五計算
主站蜘蛛池模板: 国产又粗又猛又爽视频| 女人18毛片一级毛片在线| 色妞永久免费视频| 国产精品久久久久鬼色| 美女扒开下面流白浆在线试听 | 在线播放真实国产乱子伦| 久久永久精品免费视频| 丰满人妻久久中文字幕| 久久精品免费看一| 69视频国产| 91国内视频在线观看| 国产丝袜第一页| 欧美激情一区二区三区成人| 国产福利观看| 色成人亚洲| 一区二区欧美日韩高清免费| 色色中文字幕| 国产丝袜91| 九九九九热精品视频| 毛片基地美国正在播放亚洲 | 色135综合网| 国产天天射| 日韩久久精品无码aV| 久久久久久久久久国产精品| 58av国产精品| 国产激情国语对白普通话| 青青草原国产免费av观看| 欧美综合一区二区三区| 国产全黄a一级毛片| 在线免费看黄的网站| 91在线视频福利| 国产亚洲精品无码专| 久久久久88色偷偷| 国产十八禁在线观看免费| 亚洲成a人片| 午夜精品久久久久久久99热下载| 欧美日韩91| 2020国产精品视频| 91成人免费观看| 在线亚洲精品自拍| 国产激情在线视频| 亚洲欧洲日韩综合| 国产噜噜噜| 天天摸天天操免费播放小视频| 性激烈欧美三级在线播放| 丰满的熟女一区二区三区l| 伊人成人在线视频| 国产高清无码麻豆精品| 免费中文字幕一级毛片| 色婷婷成人网| 91无码人妻精品一区| 国产美女精品人人做人人爽| 亚洲天堂精品在线观看| 97se亚洲综合不卡| 亚洲天堂视频网站| 亚洲美女一区二区三区| 国产在线视频二区| 免费人成黄页在线观看国产| 天堂岛国av无码免费无禁网站| 欧美在线伊人| 精品人妻一区二区三区蜜桃AⅤ| 97精品久久久大香线焦| 国产成人喷潮在线观看| 国产成人a在线观看视频| 国产成人一区免费观看| 亚洲一区毛片| 99热免费在线| 免费国产不卡午夜福在线观看| 在线观看精品国产入口| 日本三区视频| 一级毛片基地| 风韵丰满熟妇啪啪区老熟熟女| 久久中文无码精品| 久久精品无码中文字幕| 国产在线麻豆波多野结衣| 中国一级特黄视频| AV不卡国产在线观看| 日日拍夜夜操| 亚洲最大福利视频网| 91福利片| 日日拍夜夜操| 欧美亚洲一二三区|