利用计算机可产生随机数,一种利用计算机生成随机数的方法
一種利用計算機生成隨機數的方法
(2012-07-16 23:22:33)
標簽:
隨機數
函數
數值
計數器
程序運行
雜談
這里介紹一種利用計算機生成隨機數的方法,微機都有系統計數器記錄自運行開始以來的脈沖數,這是個規律變化的數字,只用它是不能產生隨機數的,但是如果我們對計數值進行隨機采樣則可以得到隨機數輸出,方法是借助一個性能優良的隨機函數,例如我們要生成N個隨機數,我們建立N次循環,在循環內用函數讀取系統計數值作為隨機函數的種子(也許不止一個),然后將隨機函數的值作為輸出。這樣循環結束就可以得到N個隨機數了。
計數值采樣函數,只用低32位值就夠了,高位變化緩慢沒有利用價值。試驗證實即便是連續采樣也不會讀到相同的數值,所以不同循環內的讀值更不同了。由于采到的計數器值是千變萬化的,所以隨機函數的種子是千變萬化的,隨機函數的輸出自然也是千變萬化的。方法雖然使用了隨機函數,但和這個隨機函數所能提供的隨機序列毫無關系,只是間接利用而已,這樣生成的隨機序列是沒有周期的,永不重復的。
以字節為單位的隨機數組輸出,在一般微機上能達到超過40M字節/s的輸出。實驗證實結果數組各元素是獨立的,經多次差分處理數據依然是毫無規律的。
下面的小程序運行后能產生10M字節的數據,放在rand.txt里。
http://clip2net.com/s/270uC
分享:
喜歡
0
贈金筆
加載中,請稍候......
評論加載中,請稍候...
發評論
登錄名: 密碼: 找回密碼 注冊記住登錄狀態
昵???稱:
評論并轉載此博文
發評論
以上網友發言只代表其個人觀點,不代表新浪網的觀點或立場。
總結
以上是生活随笔為你收集整理的利用计算机可产生随机数,一种利用计算机生成随机数的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: netcore权限控制_netcore
- 下一篇: JAVA入门级教学之(对象的使用)