线性同余法求随机数python实现_百面机器学习笔记 | 第八章:采样 | 02 均匀分布随机数...
均勻分布是指整個樣本空間中的每一個樣本點對應的概率(密度)都是相等的。根據樣本空間是否連續,又分為離散均勻分布和連續均勻分布。均勻分布可以算作是最簡單的概率分布。從均勻分布中進行采樣,即生成均勻分布隨機數, 幾乎是所有采樣算法都需要用到的基本操作。然而,即使是如此簡單的分布,其采樣過程也并不是顯然的,需要精心設計一定的策略。
如何編程實現均勻分布隨機數生成器?
首先需要明確的是,計算機程序都是確定性的,因此并不能產生真正意義上 的完全均勻分布隨機數,只能產生偽隨機數(偽隨機數是指這些數字雖然是通過 確定性的程序產生的,但是它們能通過近似的隨機性測試)。另外,由于計算機的存儲和計算單元只能處理離散狀態值,因此也不能產生連續均勻分布隨機數, 只能通過離散分布來逼近連續分布(用很大的離散空間來提供足夠的精度)。
一般可采用線性同余法(Linear Congruential Generator)來生成離散均勻分布偽隨機數,計算公式為:
也就是根據當前生成的隨機數
來進行適當變換,進而產生下一次的隨機數 。 初始值 稱為隨機種子。上式得到的是區間[0,m?1]上的隨機整數,如果想要 得到區間[0,1]上的連續均勻分布隨機數,用 除以m即可。可以看出,線性同余法得到的隨機數并不是相互獨立的(下一次的隨機數根 據當前隨機數來產生)。此外,根據線性同余法的計算公式,該算法最多只能產生m個不同的 隨機數,實際上對于特定的種子,很多數無法取到,循環周期基本達不到m。如果 進行多次操作,得到的隨機數序列會進入循環周期。因此,一個好的線性同余隨 機數生成器,要讓其循環周期盡可能接近m,這就需要精心選擇合適的乘法因子a 和模數m(需要利用代數和群理論)。具體實現中有多種不同的版本,例如gcc中采用 的glibc版本:
但不管怎樣,由計算機程序實現的隨機數生成器產生的都是偽隨機數,真正 的隨機數只會存在于自然界的物理現象中,比如放射性物質的衰變,溫度、氣流 的隨機擾動等。有一些網站可以提供基于大自然的隨機現象的隨機生成器,有興 趣的讀者可以嘗試一下。下圖是通過大氣噪聲來產生隨機數,可以說是“貨真價 實”的真隨機數生成器了。
閃電產生大氣噪聲面試時,面試官還可能會針對線性同余法進行深入提問,比如,線性同余法 中的隨機種子一般如何選定?如果需要產生高維樣本或大量樣本,線性同余法會 存在什么問題?如何證明上述線性同余發生器得到的序列可以近似為均勻分布 (偽隨機數)?
總結
以上是生活随笔為你收集整理的线性同余法求随机数python实现_百面机器学习笔记 | 第八章:采样 | 02 均匀分布随机数...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [转载][路由器] k2p支持ipv6相
- 下一篇: python爬虫网络库下载_Python