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