Re: [請益] 亂數表有沒有規律??
※ 引述《HuangJC (吹笛牧童)》之銘言:
: : 回到你的問題,0x00~0xFF 擴展至 0x0000~0xFFFF 是非 onto 的對映關係
: 這個 onto 我不會翻譯..
: : 也就是說,有些對應域的數值不會被定義域的數值對映到。
: : 如果你早就知道這一點的話,下一個問題是「會不會有某一區特別偏重」
: : → H45:以亂數在二維平面上隨機取點卻繪出一條直線的機率也太低了吧 05/20 05:16
: : 推 HuangJC:因為沒有很均勻呀.. 05/20 10:33
: int r=random(); // 0x00~0xFF
: //欲擴擴至 0x0000~0xFFFF,從前的精典做法是用乘法擴展
: //而我用過的 basic 指令是從浮點數開始的
: double R=r/256.0; // 0.0~1.0
: int result=R*65536; //0x0000~0xFFFF
: 事實上 result 只會有 256 種變化,也許這就是你說的 非onto
: 把這 256 種變化撒在繪圖平面上,就變出 256 條直線了
: 當然直線只是隱隱約約,但眼睛看得出來
: 一個很簡單的方法是直接移位擴展
: int r=random()<<8|random(); //0x0000~0xFFFF
: 但我不清楚前8位元如果和後8位元間形成某種數學關係
: (因為想要均勻,且沒引入任何外部種子,所以我只好用虛擬亂數)
: 會不會出現的亂數冒出很巧的規律
: 比如,第 0,2,4,6 偶數次的亂數是外部引入(鍵盤點擊時間)亂數好了
: 而第 1,3,5,7 奇數次的亂數是前一次直接乘2(溢位丟棄) XD
: 是的,我故意用了可觀察的邏輯,但的確造出很慘的效果
: r=0x0000;
: r=0x0102;
: r=0x0204;
: r=0x0408; //比如這個,前面04時,後面就只可能 08,不可能有其他值
我直接和你說結論:虛擬亂數不是這樣做的。
一個看似很亂的亂數,必須做很大的質數運算
為了計算量的效率,通常會只取最小的幾個位數來運算。
以你的例子而言好了,想要從 0x00 ~ 0xFF 擴展到 0x0000 ~ 0xFFFF
為了符合亂數的大質數運算原則,最好連續取 2 次亂數
再將這兩個亂數排在一起即可。
舉例而言:第一次取的亂數是 0x01, 第二次取的亂數是 0x02
那麼此次得到的亂數擴展到 0x0000 ~ 0xFFFF 就是 0x0102
如果你真的懂亂數產生法的話
應該知道第二次取的亂數是從第一次取完亂數之後的種子做大質數運算而得的吧。
: 點擊鍵盤和取樣頻率間的關係也類似這樣
: 雖然我點擊鍵盤的速度有無限種可能 (限制在 0~1秒間,但速度仍有無限多種)
: 但我的取樣頻率只有 10次/1秒 ,那取回的亂數值就只有 10種
: 雖然你主張頻率本身也會受雜訊干擾
: 但總之我的讀值只有 1~10
: 雜訊並不會進入我的讀值,這就是數位化呀~
: 另一種講法是我讀回的是秒數,所以 10次/1秒 可讀回的點是
: 0.1,0.2,0.3~~~ 1.0 這樣好了,但讀值不是 0.1秒
: 因為雜訊使 clock 飄移,可能讀回 0.11秒 或 0.09秒
: 這其實是有兩組不同的頻率才做得到
: 一個做 wait ,一個去讀秒,所以才能讀到 0.11 or 0.09
: 不然再怎麼漂我也不會讀到小數下兩位
: 而即使如此,雜訊也不會太大,不足以把讀值打散到均勻
: 我們將會看到繪出的直線在 0.1 的附近抖動(總共有十條直線)
: 這怎麼辦?還是不能用的
: 事實上我可以用前面談的移位擴展來做(這次談十進制)
: random() spec : 1~10 ,剛才說鍵盤亂數只有這樣的辨識度
: int R=(random()-1)*10+(random()-1); //這樣擴展成 0~99 了
: 好像蠻理想的 XD
: 不過同一個人打字有相似的均勻度
: 會不會連續取樣時都落在 0.3~0.7 之間
: 而 0.1 一直沒出現呢?
: 一直沒出現我還是不能用啊,結果是要把統計及權重搬出來
: 幫我把亂數拉散變成平均分佈嗎?
: (讀到 0.3 變 0.1,讀到 0.7 變 1.0;而且不是線性擴展)
: 總之,一個來源不均勻的東西,還要用一堆數學式去搓它
: 搓不好在繪圖時就看到一條一條有序的線
: 就說雜訊好了,在 EMI 實驗室也會看到不像雜訊的雜訊
: 一般解釋當然是環境噪音
: 不過環境噪音在反射的過程中可能會特別出現整數倍的共鳴
: (好像有輛車的喇叭發出 Do,結果高八度低八度的 Do 同時都共鳴了)
: 一般我們測的 IC 如果在某頻率有雜訊
: 那麼整數倍的頻率也可以觀察一下是不是也有雜訊
: 更別說全天下都在流行某頻率時 (比如 GSM 雙頻手機,你帶進來不就專搞這雙頻?)
: 一起開機..一起來,變得很規律 *_*
: 結果雜訊就好像海浪,它不是均勻的
: 它是一波一波的,還會漲潮退潮 XD
: 你說海浪的成因很複雜嗎?受全世界所有生物泡澡排洩的影響
: 但你明明看到它的拍打還蠻有頻率的不是?
: 我看這堆雜訊還是有共鳴的 *_*
我只回一句話,看能不能了解:
巨觀下,看似一切平靜;微觀下,卻非常混亂。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.116.247.13
推
05/20 20:27, , 1F
05/20 20:27, 1F
→
05/20 20:28, , 2F
05/20 20:28, 2F
討論串 (同標題文章)
ask-why 近期熱門文章
PTT職涯區 即時熱門文章