嗯. 其他包括白噪音, 電壓值, 線程狀態, 可用記憶變化等. 不過這些以及時間/溫度都有精度及範圍的問題. 如果測量傳回來的是 8 位元, 那麼你的骰子只能有 256 面.
而這些東西是不是真能用, 甚麼部分能用, 又得逐個看, 甚至得等硬件回應... 因此獲取速度跟偽隨機相差最少數十倍.
例子有 Java 的 SecureRandom 的官方實作, 它利用這些真隨機數據作為資料來源之一, 進行處理後經 SHA1 轉化成 160 位元, 再從中抽取 64 位元作為結果.
至於編程常用的偽隨機, 包括無處不在的 LCG, 剛才提到的 Mersenne Twister, 或較新的 XORShift / WELL, 都屬於 linear recurrences modulo m 這一類演算法.
其中最簡單的 LCG 的算式基本是 R = (aX+c) mod m. a, c, m 的選擇直接影響結果好壞.
不過再好, 受限於算式的特質, 連續數字之間有很強的關聯, 將結果描出來往往可見呈條狀分佈.
也就是說, LCG 除了速度之外沒甚麼麼好... 不幸地, 大部分語言都還在用 LCG.