演算法裡的(偽)隨機真的有用嗎?

時間 2021-05-30 11:14:21

1樓:那羅延

首先你要理解偽隨機數的偽到底是什麼意思。

這個所謂的偽,是指這是乙個固定的串型序列,這個序列上每乙個值其實都是一開始就決定好了的。你可以理解為

給定演算法和種子(種子後面說),給定某個位置 i 的數x_i,則位置 x_j 值就被唯一確定了,i和j 其實可以不分先後。

種子是乙個數,起到的作用是開啟乙個全新的序列,不同的兩個種子得到的兩個序列一定不一樣。

給定演算法和種子,同乙個序列中的數字都是一開始就決定好了的,所以稱為偽隨機序列。那麼這種偽隨機序列的意義是什麼呢?

首先你需要知道,一般來說,偽隨機數演算法得到的序列模擬的是(0, 1)範圍內的均勻分布。然後,我們可以把這個序列依次輸入(最一般的情況)某分布的cdf的反函式,也就是quantile function,來得到那個分布的偽隨機序列。

重點在這裡,偽隨機數演算法產生的偽隨機數序列,其整個序列也好,任何子集也罷,如果用來估計某相關統計量的大部分moments,都是收斂的,這是演算法決定的!

注意,任何子集很重要,這包括有規律和無規律的選取……

所以偽隨機數演算法很重要,最基本的要求就是其隨機序列可以用來一致估計那些重要的moments,這個就是所謂的 good statistical properties。然後,不同的偽隨機數演算法再以速度和序列長度互相比優劣…

最後,讀者可能要問,什麼是moments呢?

moments是如下的積分

\int g(x) f(x) dx

其中 f(x) 是隨機數x的密度函式。

如果g(x)如果是x,這個moment就是期望值;如果是 (x-m)^2 而m是期望值,則這個moment是方差等等等等……

而偽隨機數序列就是模擬x例項的序列。

2樓:

當然有用。

第一,偽隨機數生成簡單,只需要乙個演算法和乙個種子,以及一台普通計算機,就可以生成乙個偽隨機數序列。如果使用真正的隨機數,可能需要專業裝置,比如量子力學效應、放射性元素衰退輻射,或者測定人運動的精確加速度進行再計算,成本極高。除非在密碼學領域,一般沒必要使用真隨機。

第二,許多演算法當中會有對隨機數的依賴,比如快速排序,平衡樹。甚至有一些專門的隨機演算法,如退火,爬山,MillerRabin 快速判斷大質數……

這充分說明隨機是很有用的。

進化演算法有用嗎?

lackofuse 對這麼簡單粗暴的問題,先簡單粗暴回答一下。回答是 有用 首先進化演算法已經有了很多具體的實際應用。這個上網查挺多的,具體暫且不舉例了。若有追問,再詳細講講吧。本人研究生期間也是做進化演算法設計方面的研究,也有相關的專案實戰和實習經歷。下面說說,目前我所了解的,能怎麼用?先聊聊進化...

你見過的最簡單的偽隨機演算法是什麼?

幼鷹me 利用機械結構,例如彩票搖號機,缺點 生成速度慢 不能被計算機直接呼叫 無法重複 有時要用同一組隨機數測試兩套模型策略 預先生成隨機數,並且儲存到乙個外接裝置上。例如蘭德公司 RAND 出版過一本書 百萬亂數表 用確定的整數遞迴方程生成偽隨機數,優點 只用儲存公式和種子可重複 白東傑 查 L...

辯論真的有用嗎?

愛冰宇宙 沒有任何意義。一群人對著一堆炒的連剩飯都算不上的話題,不痛不癢的發表一些表層觀點,而真正的根源,卻沒有去發掘。百無一用是書生,形容辯論最好不過了。 當某個人的思想和行為獲得 一致認同 或 一致反對 或 一致沉默 時,這個人是最危險的,隨著這個人擁有的權力和能力越大,在這個人擁有的能力和權力...