unity游戲開發(fā)中的隨機(jī)算法

隨機(jī)相關(guān)內(nèi)容 C#實(shí)現(xiàn) Unity直接可用

洗牌代碼

//Fisher-Yates shuffle

static void Shuffle<T>(T[] array)

{

int n = array.Length;

for (int i = 0; i < n; i++)

{

int r = i + Random.Range(0, n - i);

T t = array[r];

array[r] = array[i];

array[i] = t;

}

}

帶權(quán)重隨機(jī)代碼

static public int GetRandomWeightedIndex(float[] weights)

{

// Get the total sum of all the weights.

float weightSum = 0;

for (int i = 0; i < weights.Length; ++i)

{

weightSum += weights[i];

}

// Step through all the possibilities, one by one, checking to see if each one is selected.

int index = 0;

int lastIndex = weights.Length - 1;

while (index < lastIndex)

{

// Do a probability check with a likelihood of weights[index] / weightSum.

if (Random.Range(0, weightSum) < weights[index])

{

return index;

}

// Remove the last item from the sum of total untested weights and try again.

weightSum -= weights[index++];

}

// No other item was selected, so return very last index.

return index;

}

偽隨機(jī)C系數(shù)生成代碼

static public float CfromP(float p)

{

float Cupper = p;

float Clower = 0f;

float Cmid;

float p1;

float p2 = 1f;

while (true)

{

Cmid = (Cupper + Clower) / 2f;

p1 = PfromC(Cmid);

if (Mathf.Abs(p1 - p2) <= 0f) break;

if (p1 > p)

{

Cupper = Cmid;

}

else

{

Clower = Cmid;

}

p2 = p1;

}

return Cmid;

}

private float PfromC(float C)

{

float pProcOnN = 0f;

float pProcByN = 0f;

float sumNpProcOnN = 0f;

int maxFails = Mathf.CeilToInt(1f / C);

for (int N = 1; N <= maxFails; ++N)

{

pProcOnN = Mathf.Min(1f, N * C) * (1 - pProcByN);

pProcByN += pProcOnN;

sumNpProcOnN += N * pProcOnN;

}

return (1f / sumNpProcOnN);

}

關(guān)于如何使用這上述C系數(shù)

每次觸發(fā)概率從一個(gè)值開始遞增家坎,第N次的觸發(fā)概率P(N) = C * N舞箍,比如25%的幾率,C值大概為8.5%舌胶,運(yùn)算流程如下:

第一次觸發(fā)眩暈概率為8.5%

第二次為17%,以此類推遞增

如果觸發(fā)眩暈成功彩掐,則概率重新從8.5%開始遞增計(jì)算铭若。

unity學(xué)習(xí)交流群大家可以點(diǎn)擊 一起交流學(xué)習(xí)哦

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市狭握,隨后出現(xiàn)的幾起案子闪金,更是在濱河造成了極大的恐慌,老刑警劉巖论颅,帶你破解...
    沈念sama閱讀 221,548評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件哎垦,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡恃疯,警方通過查閱死者的電腦和手機(jī)漏设,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來今妄,“玉大人郑口,你說我怎么就攤上這事⊥芙保” “怎么了潘酗?”我有些...
    開封第一講書人閱讀 167,990評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)雁仲。 經(jīng)常有香客問我仔夺,道長(zhǎng),這世上最難降的妖魔是什么攒砖? 我笑而不...
    開封第一講書人閱讀 59,618評(píng)論 1 296
  • 正文 為了忘掉前任缸兔,我火速辦了婚禮日裙,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘惰蜜。我一直安慰自己昂拂,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評(píng)論 6 397
  • 文/花漫 我一把揭開白布抛猖。 她就那樣靜靜地躺著格侯,像睡著了一般。 火紅的嫁衣襯著肌膚如雪财著。 梳的紋絲不亂的頭發(fā)上联四,一...
    開封第一講書人閱讀 52,246評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音撑教,去河邊找鬼朝墩。 笑死,一個(gè)胖子當(dāng)著我的面吹牛伟姐,可吹牛的內(nèi)容都是我干的收苏。 我是一名探鬼主播,決...
    沈念sama閱讀 40,819評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼愤兵,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼鹿霸!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起恐似,我...
    開封第一講書人閱讀 39,725評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤杜跷,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后矫夷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,268評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡憋槐,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評(píng)論 3 340
  • 正文 我和宋清朗相戀三年双藕,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片阳仔。...
    茶點(diǎn)故事閱讀 40,488評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡忧陪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出近范,到底是詐尸還是另有隱情嘶摊,我是刑警寧澤,帶...
    沈念sama閱讀 36,181評(píng)論 5 350
  • 正文 年R本政府宣布评矩,位于F島的核電站叶堆,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏斥杜。R本人自食惡果不足惜虱颗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評(píng)論 3 333
  • 文/蒙蒙 一沥匈、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧忘渔,春花似錦高帖、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至宣赔,卻和暖如春预麸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背拉背。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工师崎, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人椅棺。 一個(gè)月前我還...
    沈念sama閱讀 48,897評(píng)論 3 376
  • 正文 我出身青樓犁罩,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親两疚。 傳聞我的和親對(duì)象是個(gè)殘疾皇子床估,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容