Re: [問題] 有關於亂數產生不重覆的問題
看板C_and_CPP (C/C++)作者DarkKiller (System hacked)時間19年前 (2005/10/03 11:14)推噓0(0推 0噓 0→)留言0則, 0人參與討論串2/2 (看更多)
Sir,
如果你只知道 Linear Congruential Method 的話,那也沒關係,但 LCM 不是
被用得最廣的,用的最廣的是用在目前的 SSL,在大多數的 SSL Library 裡都
不是用 LCM 當 PRNG。
另外上次樂透的問題那是他們自己耍白癡,把「彩券號碼」與「是否中獎」用
一個公式綁起來,結果被別人找到近似公式。
正確的作法是讓這兩個東西不相關,跟 PRNG 無關。
另外你說的東西根本跟 IBM 無關,這是很有名的一篇論文:
Random number generators: good ones are hard to find
Park and Miller, Communications of the ACM, vol. 31, no. 10, October 1988, p. 1195.
※ 引述《sjgau (sjgau)》之銘言:
: 談 樂透程式的亂數產生器
: 產生亂數的副程式是 樂透程式的關鍵,
: 可是,連XX銀行,每個月的營業規模達
: 數十億台幣的樂透程式,他們的亂數也是
: 寫得很爛。
: 不相信的話,請你花 一百元買兩組電腦選號
: 的樂透,然後看看你拿到的號碼,是否滿意?
: 問題是出在,他們對於產生亂數的副程式
: 了解不夠,寫的不夠好。
: 目前,全世界最經常被使用的產生亂數的副程式,
: 其數學公式如下
: r(n)= (r(n-1)*a + b) mod c
: 第 n 個亂數,等於 前一個亂數,
: 乘以 a, 加上 b
: 把得到的結果,對 c 取餘數
: (a, b, c) 的選擇,非常重要
: IBM 建議使用
: a= 16807, b= 0, c= 2147483647
: 另外一組被推薦的是
: a= 48271, b= 0, c= 2147483647
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.54.119
※ 編輯: DarkKiller 來自: 140.113.54.119 (10/03 11:38)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章