怎麼用程式設計實現概率大小問題?

時間 2021-05-31 22:40:19

1樓:耶倫奶奶

題主擔憂的應該是目前的計算機產生隨機數的方法不夠隨機。

事實上,目前計算機產生隨機數的方法基本上都是「偽隨機數」,想利用自然界中的真隨機數只能通過外設乙個類似於擲硬幣或者擲骰子的機器來生成,並給他寫乙個驅動(霧)。

計算機生成均勻分布(uniform distribution,應該是題主想要的)的方法有好多種,如C語言中stdlib庫中的rand()使用的線性同餘法,以及C++11中庫中的std::mt19937使用的梅森旋轉演算法等。你問我數學上這些演算法均不均勻?

它們連隨機數都不是它還講什麼均不均勻!當然,在一定的範圍內(例如普通的科研工作和你所說的遊戲中),你可以認為他們產生的就是隨機數。

標籤中寫了C++,但是C++畫圖太麻煩,我給題主展示下Python2.7中random.randint生成的隨機數結果。

import

random

from

matplotlib

import

pyplot

defmain

():cnt=0

result

=while

cnt<

100000

:cnt+=1

number

=random

.randint(1

,10)if

number==1

:result

['A']+=

1elif

number==2

ornumber==3

:result

['B']+=

1print

result

['A'

],result

['B'

]# output: 9958 20008pyplot

.bar([0

,1.5],[

result

['A'

],result

['B'

]],width=1

,color

='g'

)pyplot

.show

()if

__name__

=='__main__'

:main()

2樓:

我以計算數學+計算機軟體+生物資訊的背景,說點自己的看法:

1 我猜測你不只是想知道這乙個概覽計算的具體問題的答案,你可能是想知道一類問題的答案,它就是 --- 數值平衡 !

2 典型的應用場景,就是你所說的遊戲關卡設計等; 比如,乙個遊戲有10大角色,5大門派;這麼大乙個遊戲系統,甚至是虛擬實境,如何保證玩家選擇任意一種門派+角色,都有相對公平的成長能力和戰鬥力呢? 就是靠數值平衡來保證的!

3 一般遊戲公司的數值平衡,都是找有經驗的人帶本科計算數學畢業,或碩士計算數學畢業的,經過幾個專案的錘煉,基本可以獨當一面了。

3樓:謝偉幸

這方面的知識我是沒有的,我只能借花敬佛。看完Milo Yip的這篇部落格我覺得樓主會挺滿意的了

4樓:Tianji Li

1. 用你選擇的語言的隨機函式產生乙個0到1之間的數(叫做rthres)

2. if rthres 小於 10%

3. 生成寶石;

4. else

5. do something else or nothing.

5樓:康清波

用C語言的話,合成某寶石的機率為10%:

srand( time(NULL) );

int random = rand()%9;

產生0的概率就是1/10.

程式語言中內建型別是怎麼實現的?

Yunfei Lu 都有。一種語言,首先有基本型別,其實就是資料在記憶體的布局,方便表示不同種類的資料,例如整型和浮點是一定要有的,因為cpu的規範。再組合得到陣列,函式型別等,再發展出代數型別,然後包裝成介面 類 泛型等高階概念。基本型別在編譯器裡規定。至於標準庫中定義的型別,通常是某種組合的封裝...

怎麼用C 實現氣泡排序演算法?

禽獸狼 不用謝 include using namespace std intmain int argc char argv int p Array p asm for auto n Array cout cout return0 已登出 不用謝 不當人大隊3 n include using nam...

用RPG maker mv做遊戲,怎麼實現即時戰鬥功能?

要實現基礎的arpg的話,純事件雖然可以有實現的思路,但勢必會非常卡。首先arpg的核心元素是 1.通過按鍵進行攻擊 2.敵人能主動接近主角並進行攻擊 第一點要實現起來相對容易,只需要根據主角的座標用乙個公共事件給一兩個事件賦值就行了 具體多少個看你的具體攻擊判定範圍 但第二個要實現起來有些麻煩,當...