第一次沒有課表、第一次自己選課…
新生們「貘」急、「貘」慌、「貘」害怕。⛔
📣選課資訊編編報乎你知!
🙋♂️去哪裡選課?
登入 #校務資訊系統 →進入 #選課系統
🙋♂️新生選課時間?
9月3日~6日(每天中午12.到隔天上午9.)
9月7日上午9.系統關閉後進行亂數抽籤,最快下午1.就能知道結果。
不論早選晚選,機會通通都一樣。在時間內選好選滿就對了!
另外、也提醒全校學生:
⭐第三次選課時間:9月8日~9日
⭐加退選時間:9月12日~29日
快分享給身邊的新生或老朋友。
多積功德來保佑選課順利!🙏
🔎更多參考資料
新生選課懶人包:https://reurl.cc/1YnYXG
新生資訊網:http://freshman.nthu.edu.tw/
#年度人品考驗時間
#迎接美好大學生活就從選課開始
同時也有5部Youtube影片,追蹤數超過2萬的網紅呂聰賢,也在其Youtube影片中提到,...
「亂數抽籤」的推薦目錄:
- 關於亂數抽籤 在 國立清華大學National Tsing Hua University Facebook 的精選貼文
- 關於亂數抽籤 在 公視新聞網 PNN Facebook 的最佳解答
- 關於亂數抽籤 在 公視新聞網 PNN Facebook 的最佳貼文
- 關於亂數抽籤 在 呂聰賢 Youtube 的最讚貼文
- 關於亂數抽籤 在 呂聰賢 Youtube 的精選貼文
- 關於亂數抽籤 在 公視新聞網 Youtube 的最佳解答
- 關於亂數抽籤 在 Re: [請益] 亂數表有沒有規律?? - 精華區ask-why 的評價
- 關於亂數抽籤 在 麵包日貨Bread in JP - 恭喜得獎者:Willa Lin 以上由亂數抽籤 ... 的評價
- 關於亂數抽籤 在 Classdojo 15抽籤挑選器與random亂數抽籤 - YouTube 的評價
- 關於亂數抽籤 在 使用Random方法,產生多組亂數值並不重複 - gists · GitHub 的評價
- 關於亂數抽籤 在 動滋券「射飛鏢抽亂數種子」看完霧煞煞PTT神人詳解曝光! 的評價
- 關於亂數抽籤 在 有抽亂數的APP嗎? - Mobile01 的評價
亂數抽籤 在 公視新聞網 PNN Facebook 的最佳解答
台中市規劃了殘劑施打預約網站,今天上午9點開放預約,但上線的第一天,很多民眾瞬間湧入,導致系統無法負荷,截至中午都還是無法進入網頁。台中市府趕緊調整,登記預約延長4小時到下午5時止,晚間7時30分公布名單,並強調民眾在時限內登記預約即可,就算成功也需亂數抽籤,不是先搶先贏。
亂數抽籤 在 公視新聞網 PNN Facebook 的最佳貼文
台中市30日將開放75歲以上長輩施打疫苗,也規劃了殘劑施打預約網站,29日上午9點開放預約。但上線的第一天,很多民眾都無法成功上網預約,市府表示,因為網站流量瞬間過大,造成塞車;其實民眾只要在時限內登記預約,都會亂數抽籤,並不是先搶先贏。
亂數抽籤 在 呂聰賢 Youtube 的最讚貼文
亂數抽籤 在 呂聰賢 Youtube 的精選貼文
亂數抽籤 在 公視新聞網 Youtube 的最佳解答
台中市規劃了殘劑施打預約網站,今天上午9點開放預約,但上線的第一天,很多民眾瞬間湧入,導致系統無法負荷,截至中午都還是無法進入網頁。台中市府趕緊調整,登記預約延長4小時到下午5時止,晚間7時30分公布名單,強調民眾在時限內登記預約即可,就算成功也需亂數抽籤,不是先搶先贏。
詳細新聞內容請見【公視新聞網】 https://news.pts.org.tw/article/533037
-
由台灣公共電視新聞部製播,提供每日正確、即時的新聞內容及多元觀點。
■ 按讚【公視新聞網FB】https://www.facebook.com/pnnpts
■ 訂閱【公視新聞網IG】https://www.instagram.com/pts.news/
■ 追蹤【公視新聞網TG】https://t.me/PTS_TW_NEWS
#公視新聞 #即時新聞
-
看更多:
■【P sharp新聞實驗室】全媒體新聞實驗,提供新一代的新聞資訊服務。 (https://newslab.pts.org.tw)
■【PNN公視新聞議題中心】聚焦台灣土地環境、勞工司法、族群及平權等重要議題。 (https://pnn.pts.org.tw)
亂數抽籤 在 麵包日貨Bread in JP - 恭喜得獎者:Willa Lin 以上由亂數抽籤 ... 的推薦與評價
恭喜得獎者:Willa Lin 以上由亂數抽籤產生(第80位留言者) 請得標者私訊麵包你的收件資料唷*連假開工送好禮* 這次麵包要送大家的是迪士尼商品唷只要在今晚(4/5)22:00前 ... ... <看更多>
亂數抽籤 在 Re: [請益] 亂數表有沒有規律?? - 精華區ask-why 的推薦與評價
※ 引述《semop (semop)》之銘言:
: 電腦可以產生合乎各種亂數檢測方法、基本上無法逆推的 "真實亂數" (當然
: 有人不同意這是 "真實" 亂數,但這是定義問題) 。
: 只是一般來說,產生這種亂數的運算成本甚高。
: 一個簡單的例子是拿 pi 或 e 值或更不常見的無理數作為基準來製作亂數,
: 它們沒有常用的亂數方法的循環問題,永遠不會重複產生資料。
: 但除非是使用硬體方法,無法產生 "自然亂數" 。
: 現在已經有 https://random.org 這類網站出現,免費公開地提供硬體產生的
: 自然亂數,以後電腦程式使用的亂數資料應該會逐漸改以自然亂數為主了。
: 所以大家以後就別說電腦所使用的亂數都一定是假亂數了。這觀念要改一改。
對不起我是個門外漢,
如果避免了重複使用同一個亂數種子,
以及同一個亂數種子產生的亂數不要多過週期,
為什麼還需要這種自然亂數呢?
譬如以使用者的 input 時間間隔來取種子等等方式, 會遇到什麼限制嗎?
使用偽亂數還會遇到什麼樣的問題與困擾呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.42.20.13
> -------------------------------------------------------------------------- <
作者: H45 (!H45) 看板: ask-why
標題: Re: [請益] 亂數表有沒有規律??
時間: Tue May 19 03:47:12 2009
※ 引述《StaticVortex ()》之銘言:
: ※ 引述《semop (semop)》之銘言:
: : 電腦可以產生合乎各種亂數檢測方法、基本上無法逆推的 "真實亂數" (當然
: : 有人不同意這是 "真實" 亂數,但這是定義問題) 。
: : 只是一般來說,產生這種亂數的運算成本甚高。
: : 一個簡單的例子是拿 pi 或 e 值或更不常見的無理數作為基準來製作亂數,
: : 它們沒有常用的亂數方法的循環問題,永遠不會重複產生資料。
: : 但除非是使用硬體方法,無法產生 "自然亂數" 。
: : 現在已經有 https://random.org 這類網站出現,免費公開地提供硬體產生的
: : 自然亂數,以後電腦程式使用的亂數資料應該會逐漸改以自然亂數為主了。
: : 所以大家以後就別說電腦所使用的亂數都一定是假亂數了。這觀念要改一改。
: 對不起我是個門外漢,
: 如果避免了重複使用同一個亂數種子,
: 以及同一個亂數種子產生的亂數不要多過週期,
: 為什麼還需要這種自然亂數呢?
: 譬如以使用者的 input 時間間隔來取種子等等方式, 會遇到什麼限制嗎?
: 使用偽亂數還會遇到什麼樣的問題與困擾呢?
此問題應回歸於:為何需要亂數?
因實際需求,有些亂數要求無法預測以提升系統安全
有些亂數要求分佈足夠均勻以提升搜尋效果
而有些亂數要求模擬真實環境以測試系統容錯能力
基於以上需求,有些情況並非虛擬亂數可以滿足
無法預測的特性乃自然亂數優於虛擬亂數的原因之一
在一般的情況下
虛擬亂數 (如 Java 內建 Random 類別所含演算法) 已經足以應付大部分的需求
好比說:隨機從題庫抓練習題、隨機閱讀網路的一篇文章
並不需要多麼難以預測的亂數源,只要虛擬亂數即可。
然而,需要絕對無法被猜到的情況下,自然亂數比虛擬亂數更加可靠
好比說:隨機產生加密金鑰、隨機產生雜訊
自然亂數保證任何人都無法準確地猜到未來的亂數是多少
畢竟人類還沒有能力預言這個世界的所有細節。
回到原發問者的問題:以使用者的 input 時間間隔來取種子的方式會遇到什麼限制?
假設使用者 input 時間間隔足夠稱為自然亂數 (不是由機器精準地以固定時間輸入)
那麼,此種子即為自然亂數,後面的種種運算都是基於自然亂數的結果
此時間間隔不能說是偽亂數。
然而,如果將自然亂數再做一次虛擬亂數演算法所得到的數值,並不能稱之為自然亂數
因為每一次運算所得到數值都與自然亂數相關
連續做多次虛擬亂數演算法所得到一連串數字彼此之間有關聯
這些數字只能代表同一個自然亂數的衍生物
只要知道第一個數字是多少,後面的數字全部都可以推算出來
相對地,一連串真正的自然亂數是知道第一個數字,仍然無法推算出其他亂數是多少。
舉例而言,你有辦法知道另一個使用者 (人) input 的時間間隔嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.116.247.13
> -------------------------------------------------------------------------- <
作者: H45 (!H45) 看板: ask-why
標題: Re: [請益] 亂數表有沒有規律??
時間: Tue May 19 19:37:22 2009
:
: 然而,如果將自然亂數再做一次虛擬亂數演算法所得到的數值,並不能稱之為自然亂數
: 因為每一次運算所得到數值都與自然亂數相關
: 連續做多次虛擬亂數演算法所得到一連串數字彼此之間有關聯
: 這些數字只能代表同一個自然亂數的衍生物
: 只要知道第一個數字是多少,後面的數字全部都可以推算出來
: 相對地,一連串真正的自然亂數是知道第一個數字,仍然無法推算出其他亂數是多少。
:
: 舉例而言,你有辦法知道另一個使用者 (人) input 的時間間隔嗎?
:
: --
: ※ 發信站: 批踢踢實業坊(ptt.cc)
: ◆ From: 140.116.247.13
: → HuangJC:亂數的亂度也很重要,以前拿到一個 0x00~0xFF 的亂數時,都 05/19 12:48
: → HuangJC:自己任意擴展到 0x0000~0xFFFF 使用,老實說沒數學底子,心 05/19 12:48
: → HuangJC:裏很虛,不知有沒有造成某一區特別偏重的問題 05/19 12:48
亂度我不清楚是什麼,但是我知道均勻度可以用數字簡單估測。
假設你說的亂度就是我說的均勻度
我必須提出一點:
自然亂數的分佈不太均勻
若自然亂數比任何虛擬亂數都均勻
那麼下一個時間點的自然亂數比虛擬亂數更容易預測
然而事實卻是自然亂數比虛擬亂數還要難預測,而且自然亂數的分佈並沒有比較均勻
換言之,以均勻為目標的虛擬亂數反而比自然亂數還要均勻。
回到你的問題,0x00~0xFF 擴展至 0x0000~0xFFFF 是非 onto 的對映關係
也就是說,有些對應域的數值不會被定義域的數值對映到。
如果你早就知道這一點的話,下一個問題是「會不會有某一區特別偏重」
答案是視你的亂數產生法而定,就我所知的三個亂數產生法而言
有些亂數產生法非常不均勻,但是很難預測下一個時間點運算出來的亂數
也有些亂數產生法非常均勻,可是用人腦都知道下一個時間點算出來的會是多少。
以你擔心某一區偏重的問題而言
可以用均勻分佈之亂數產生器來解決
(附帶一提,Java 內建的 Random 之演算法是屬於不均勻,但是很難預測的那種)
: → HuangJC:人輸入的時間間隔也會受 clock 取樣影響,出現數位化的邊界 05/19 12:49
: → HuangJC:當然如果能以量子級的取樣,那我絕不擔心 :P 05/19 12:50
取樣得愈細,某位數以下的數值愈可以當作亂數 (想像細至 1E-10 cm)
這麼小的數值,幾乎可以歸至誤差或是雜訊
只要誤差或雜訊干擾大到某個程度 (想像誤差是 -1E-9 ~ 1E-9 cm)
下一個時間點的取樣結果幾乎不可能被預測,畢竟人類還沒辦法完全掌握誤差和雜訊。
以你說的 clock 取樣影響,人輸入的時間間隔之最小單位就是一個 clock
但是人輸入的時間間隔難以預測,再加上其他電路的干擾
可以讓誤差大過 clock 取樣的好幾倍……這樣還需要擔心亂數不亂嗎?
我是不太懂為什麼一定要到量子級才不用擔心,難道 clock 還不夠細...?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.117.172.148
> -------------------------------------------------------------------------- <
作者: HuangJC (吹笛牧童) 看板: ask-why
標題: Re: [請益] 亂數表有沒有規律??
時間: Wed May 20 11:17:34 2009
: 回到你的問題,0x00~0xFF 擴展至 0x0000~0xFFFF 是非 onto 的對映關係
這個 onto 我不會翻譯..
: 也就是說,有些對應域的數值不會被定義域的數值對映到。
: 如果你早就知道這一點的話,下一個問題是「會不會有某一區特別偏重」
: : → HuangJC:人輸入的時間間隔也會受 clock 取樣影響,出現數位化的邊界 05/19 12:49
: : → HuangJC:當然如果能以量子級的取樣,那我絕不擔心 :P 05/19 12:50
: → 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,不可能有其他值
點擊鍵盤和取樣頻率間的關係也類似這樣
雖然我點擊鍵盤的速度有無限種可能 (限制在 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: 61.219.65.16
> -------------------------------------------------------------------------- <
作者: H45 (!H45) 看板: ask-why
標題: Re: [請益] 亂數表有沒有規律??
時間: Wed May 20 11:43:12 2009
※ 引述《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
> -------------------------------------------------------------------------- <
作者: littleshan (我要加入劍道社!) 看板: ask-why
標題: Re: [請益] 亂數表有沒有規律??
時間: Wed May 20 11:49:23 2009
※ 引述《HuangJC (吹笛牧童)》之銘言:
: 點擊鍵盤和取樣頻率間的關係也類似這樣
: 雖然我點擊鍵盤的速度有無限種可能 (限制在 0~1秒間,但速度仍有無限多種)
: 但我的取樣頻率只有 10次/1秒 ,那取回的亂數值就只有 10種
我只能說
你在這邊的做法就錯了
一般是這樣
1. GetLocalTime() // 或是 gettimeofday() 或是 RDTSC, whatever
2. 等待 user 敲鍵盤
3. GetLocalTime(),然後和 1. 取得的值相減
Windows 上 GetLocalTime 精確度是 0.001 秒,
POSIX 的 gettimeofday 精確度是 0.000001 秒,
RDTSC 更猛,是看 CPU clock rate 的,
1G 的 CPU 就是以 0.0000000001 秒為單位
以這種方法取得時間差的個位數字
基本上相當難以預測
若你的手能夠以亳秒為單位做動作
只能說你有一雙神之手
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.87.151.2
> -------------------------------------------------------------------------- <
作者: HuangJC (吹笛牧童) 看板: ask-why
標題: Re: [請益] 亂數表有沒有規律??
時間: Wed May 20 20:24:06 2009
: → littleshan:我是說,你提到「打字間隔集中在0.3~0.7秒」的問題 05/20 12:30
: → littleshan:只要用高精確度的 timer 就可以解決 05/20 12:31
: → littleshan:除非你的手能控制打字間隔落在 X.XX3 秒至 X.XX7 秒間 05/20 12:32
首先說,我看不懂前一篇的質數;我就是需要一個數學家來幫我
(這樣我就不必多回一篇了)
再來我提一下我不懂的細節,而且我不認為夠密就當然夠均勻
舉例來說,如果我有一個夠均勻的亂數,十種變化
int r=random(); // 0~9
我要把它縮小到 9種變化
int R= (r/9.0)*8; // 0~8
這樣,因為不是擴展,絕對不可能有變化太少的問題
但可能偏重於某幾個變化
假設亂數函式並不亂,只是均勻,只是我做證明的工具
我當然可以給它一個偽函式,就簡單遞增,到最大值時繞捲為 0 好了
於是,r= 0,1,2,3,4,5,6,7,8,9 依序十次
而 R= 0,0,1,2,3,4,5,6,7,8 以無條件捨去來做浮點轉換
反正就算你要四捨五入也會有一樣的問題
好,以上 0 出現兩次
亂數的均勻度要大量才能趨近,否則我只有9種值卻要求做10次,當然不可能公平
那我們做90次好了 (9和10的公倍數;我隱隱聞到質數的道理,但又無法了解)
這90次裏,我希望 r 均勻出現 0~9 九次
然後 R=f(r) 這個公式要改一下,就可以讓 0~8 均勻出現十次
(九十次做完次數才對就好了;但簡單的答案中,循環出現也是可以接受的
因為我不討論有多亂,只先討論均勻)
從這裏可以看出,如果我只有簡單的公式做 R=f(r)
那麼做十次,R=0 會重覆出現兩次
做90次呢?它重覆出現 20次
而畫成圖會怎樣?就是在 R=0 的位置比較粗,變一條直線
不均勻就是這樣呀~
因為只有用簡單的公式去把原始亂數擴展或縮小到我要的範圍
原本的 0x00~0xFF 擴展成 0x0000~0xFFFF,我還算有直覺去解
然後我可以把 65536 的變化程度向內縮,去滿足任何一種(小於65536)範圍的亂數需求
但是這條不均勻惹出的直線,始終會非常明顯
光要亂數是有啦
但好像尾牙抽獎,0號那位同仁每次都比別人多一個中獎機會
你說,這亂數公平嗎?
或者我不要用乘法,用捨去法可以嗎?
R=r,但當 r=9 時,重抽一次
這樣我可不可以聲明 R 的均勻度公平了?
只是有 1/10 的機率會使計算減慢(重抽一次)
當然,大部份時候,這樣設計程式都叫想太多
我們很簡單的把原始亂數除到變成 0~1 的浮點數再乘開就好了
沒有人會知道其實他天生中獎率就比別人低了
只怪他命不好 :P
不好意思,也有黑心程式 XD
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.219.65.16
如果可以,好像最省事 XD,但如果我要縮至 0~3..總之小心累死,不斷重抽..
※ 編輯: HuangJC 來自: 61.219.65.16 (05/20 22:14)
> -------------------------------------------------------------------------- <
作者: littleshan (我要加入劍道社!) 看板: ask-why
標題: Re: [請益] 亂數表有沒有規律??
時間: Wed May 20 23:48:58 2009
※ 引述《HuangJC (吹笛牧童)》之銘言:
[deleted]
: 當然,大部份時候,這樣設計程式都叫想太多
: 我們很簡單的把原始亂數除到變成 0~1 的浮點數再乘開就好了
: 沒有人會知道其實他天生中獎率就比別人低了
: 只怪他命不好 :P
: 不好意思,也有黑心程式 XD
我大概了解了你的意思
然而隨著 random number 的值域愈大
你所說的機率偏差也會隨之縮小
一般程式設計師並不會拿 0.0~0.9 僅有十種變化的 random variable
直接拿去乘 9.0 再做個 floor()
然後就說這是個 0~8 之間的 uniform random integer
若你的原始亂數是 0.000 ~ 0.999 有 1000 種可能
那麼經過運算後
出現 0 的機率僅比出現其它數字的機率大了 0.001
若你的原始亂數是小於 1.0 的 IEEE754 single-precision floating point
機率偏差為 2^-23
這個數字...八百萬分之一
說實話已經很小了 浮點運算誤差造成的影響還比較大
如果不滿意,你還可以改用 double
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.217.30.156
※ 編輯: littleshan 來自: 61.217.30.156 (05/20 23:55)
> -------------------------------------------------------------------------- <
作者: StaticVortex () 看板: ask-why
標題: Re: [請益] 亂數表有沒有規律??
時間: Wed May 20 23:52:34 2009
感謝回應,
提供幾點迴響,
也許有誤或不足,
希望不吝指教.
關於以使用者擊鍵時間間隔為亂數種子,
可能會由於作業系統對鍵盤緩存的設計,
使得當程式要求讀值時,
在緩存中的幾筆資料在很短的時間內送往程式,
也就失去了原來自然亂數的性質.
https://www.random.org/randomness/
For example, it can be tricky to use keystrokes in this fashion,
because keystrokes are often buffered by the computer's operating system,
meaning that several keystrokes are collected
before they are sent to the program waiting for them.
To a program waiting for the keystrokes,
it will seem as though the keys were pressed almost simultaneously,
and there may not be a lot of randomness there after all.
https://msdn.microsoft.com/en-us/library/aa459265.aspx
Keystrokes occur asynchronously with user action
while the I/O Manager sends the driver an IRP for the read request.
The driver gives the appearance of simultaneously receiving input
from the device and passing the keystroke data to I/O Manager
by maintaining a buffer of keystrokes.
在應用自然亂數於資訊安全時,
如果重複使用虛擬亂數產生器作為新種子,
通常會使產生的亂數品質變差,
https://www.lavarnd.org/faq/prng.html
To achieve output unpredictability of high quality PRNG,
one must start with an unpredictable seed.
Using second PRNG to create the seed does not help
because that simply transfers the problem of seeding onto the second PRNG.
Worse yet, using a PRNG to repeatedly seed another (or even worse the same)
PRNG usually degrades the quality of the output.
但在這篇專利 https://www.google.com/patents?id=ou0gAAAAEBAJ
(
www.lavarnd.org 前身 lavarand 使用的技術
參見 https://www.wired.com/wired/archive/11.08/random.html
Lavarand, a patented system that used Lava Lites to help generate random
numbers. (Patent 5,732,138: "Method for seeding a pseudo-random number
generator with a cryptographic hash of a digitization of a chaotic system.")
)
它將經由渾沌系統產生的自然亂數先雜湊過後再作為種子,
" the present invention pertains to an apparatus and method
for producing a seed for a pseudo-random number generator
from hashing the digitization of a chaotic source.
其理由這麼說
" The cryptographic hashing function serves several purposes.
The cryptographic hash make it difficult to predict the chaotic system.
Furthermore, small variations in the digitized chaotic system
will produce extremely different binary strings.
In addition, knowledge about the cryptographic hash
yields no information regarding the chaotic system.
其舉了 state of clouds 作為例子說明
locality inherent 使渾沌系統在某些程度上可以被預測,
而使用 hash function 轉換 後 可以消抹 locality inherent 性質.
( given hash(x) , it is hard to find hash(x+1) )
不過經過一次雜湊, 為什麼不會像前面引文所指,反而使亂數品質變差呢?
如果跳過雜湊, 直接將自然亂數作為亂數種子丟到虛擬亂數產生器所產生的金鑰,
沒辦法有效消抹 locality inherent 性質 嗎?
※ 引述《H45 (!H45)》之銘言:
: 此問題應回歸於:為何需要亂數?
: 因實際需求,有些亂數要求無法預測以提升系統安全
: 有些亂數要求分佈足夠均勻以提升搜尋效果
: 而有些亂數要求模擬真實環境以測試系統容錯能力
: 基於以上需求,有些情況並非虛擬亂數可以滿足
: 無法預測的特性乃自然亂數優於虛擬亂數的原因之一
: 在一般的情況下
: 虛擬亂數 (如 Java 內建 Random 類別所含演算法) 已經足以應付大部分的需求
: 好比說:隨機從題庫抓練習題、隨機閱讀網路的一篇文章
: 並不需要多麼難以預測的亂數源,只要虛擬亂數即可。
: 然而,需要絕對無法被猜到的情況下,自然亂數比虛擬亂數更加可靠
: 好比說:隨機產生加密金鑰、隨機產生雜訊
: 自然亂數保證任何人都無法準確地猜到未來的亂數是多少
: 畢竟人類還沒有能力預言這個世界的所有細節。
: 回到原發問者的問題:以使用者的 input 時間間隔來取種子的方式會遇到什麼限制?
: 假設使用者 input 時間間隔足夠稱為自然亂數 (不是由機器精準地以固定時間輸入)
: 那麼,此種子即為自然亂數,後面的種種運算都是基於自然亂數的結果
: 此時間間隔不能說是偽亂數。
: 然而,如果將自然亂數再做一次虛擬亂數演算法所得到的數值,並不能稱之為自然亂數
: 因為每一次運算所得到數值都與自然亂數相關
: 連續做多次虛擬亂數演算法所得到一連串數字彼此之間有關聯
: 這些數字只能代表同一個自然亂數的衍生物
: 只要知道第一個數字是多少,後面的數字全部都可以推算出來
: 相對地,一連串真正的自然亂數是知道第一個數字,仍然無法推算出其他亂數是多少。
: 舉例而言,你有辦法知道另一個使用者 (人) input 的時間間隔嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.42.20.13
> -------------------------------------------------------------------------- <
作者: littleshan (我要加入劍道社!) 看板: ask-why
標題: Re: [請益] 亂數表有沒有規律??
時間: Thu May 21 17:46:17 2009
※ 引述《littleshan (我要加入劍道社!)》之銘言:
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.217.30.156
※ 編輯: littleshan 來自: 61.217.30.156 (05/20 23:55)
的確就只有 R=0 的機率比其它值高一點點
P( R=0 ) = P( 0.000 <= r <= 0.111 ) = 0.112
P( R=1 ) = P( 0.112 <= r <= 0.222 ) = 0.111
...
P( R=8 ) = P( 0.889 <= r <= 0.999 ) = 0.111
像這種情況 取十次 3-state random variable 再去轉換成 2-state random variable
那麼機率偏差是 3^-10 大約是六萬分之一
甚至你可以用 rejection sampling
0, 1, 2 三種情況,抽到 2 就重新 sample
看起來重新 sample 的機率達 1/3 似乎效率很差
但平均而言,僅需 1.5 次的 sampling 就可以取得無偏差的 random variable
效率甚至比前述取十次的方法還好 (以 amortized analysis 的角度)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.87.151.2
... <看更多>