此源碼為基礎(chǔ)底層代碼貼,沒有應(yīng)用代碼。是作為運(yùn)行庫使用的。
一:易原生隨機(jī)數(shù)特性
易語言生成隨機(jī)數(shù),其實為平均分布的隨機(jī)數(shù)。
即是為多個隨機(jī)數(shù)是滿足平均分布規(guī)律的,也就是說所有范圍內(nèi)的數(shù)都是一樣多的。
下圖為100萬個易隨機(jī)數(shù)的,概率分布圖。
二、隨機(jī)數(shù)的應(yīng)用
由上可以看出,雖然規(guī)律很好。但這樣的分布規(guī)律并不能滿足我們所有的需求。
我們需要在某些時候讓一些區(qū)域分布減少或都加。平均隨機(jī)數(shù)就不能滿足我們需求了。
比如,
1、發(fā)牌時,可以讓一些牌發(fā)放機(jī)率高,一些牌機(jī)率低。
2、驗證碼生成時,可以讓一些因素生成高,一些低。
3、抽獎時,可以讓一些數(shù)字高,一些數(shù)據(jù)字,甚至是沒有。
(雖然看起來數(shù)據(jù)都是隨機(jī)雜亂的,但是經(jīng)過概率設(shè)定,可以是完全沒有),這樣一想大多數(shù)的抽獎軟件,背后操作空間真是太大了。
4、所有需用隨機(jī)數(shù)的地方都可以用到。
三、統(tǒng)計學(xué)常用的隨機(jī)分布
以下只貼幾個數(shù)學(xué)上常用的隨機(jī)數(shù)的分布圖形。這些都只需作為了解
四、任意分布隨機(jī)數(shù)
這里說的是本文的重點。
本模塊源碼重點包含兩塊算法:
1、正態(tài)隨機(jī)數(shù)的算法生成(多次單個隨機(jī)數(shù)生成)
單個點生成點的概率按正態(tài)分布,無數(shù)個后統(tǒng)計規(guī)律呈現(xiàn)正態(tài)分布特性。
基于Box–Muller變換的正態(tài)隨機(jī)數(shù)生成方法
2、任意分布隨機(jī)數(shù)的類(一次多個隨機(jī)數(shù)生成)
任意隨機(jī)數(shù)的生成算法,這里就不詳講,算法是我自創(chuàng)。各位不用非得理解里面的算法。
這算法沒有數(shù)字理論證明,在數(shù)學(xué)應(yīng)用上是不存在"任意分布隨機(jī)數(shù)"的算法的。
也不存在統(tǒng)一的數(shù)學(xué)算法,那是因為絕大多數(shù)的概率密度函數(shù)是不可計算反函數(shù)。
而要正面生成概率隨機(jī)數(shù),就必須得到概率分布函數(shù)的反函數(shù)。這就是幾乎不可能做到的事。
(這一點可以在正態(tài)分布隨機(jī)數(shù)源碼中看得到)
我使用的算法是我自創(chuàng)的,算法并不復(fù)雜,但算法很抽象。重在于快速、穩(wěn)定、可靠。(源碼各位能理解就理解,理解不了,直接調(diào)用就行)
實際無數(shù)次使用完全符合理論分布規(guī)律,各位可以隨意點擊嘗試分布曲線,是否是按預(yù)設(shè)的一樣。
|