作者tropical72 (藍影)
看板C_and_CPP
標題[問題] 亂數上限(取 > RAND_MAX 亂數) 問題
時間Mon May 24 05:59:44 2010
遇到的問題: (題意請描述清楚)
為避免以後我還會遇到類似的問題,
我把相關的問題都一起先問了..
C 語言裡有定義一個 RAND_MAX, 32767 (int 型態)
(1) 若我今天要產生 0~9999999 整數亂數, 該怎麼辦?
(2) 若我今天要產生 -9999999.999 ~ 9999999.999
我的想法 (for (1)):
a. 將 0-9999999 切成 10000 等份, 0-999, 1000-1999, ....., etc.
b. 先取 0-9999亂數一次, 可以得到是在第幾個等份
c. 再取一次 0-999亂數, 可得該等份第幾個元素
請問上述這種方式是否嚴謹?
不知是否有人有其它相關經驗可以參考或分享??
非常感激各位先進指教
--
我期待 我等待
肩狹骨上的翅膀早些長出來
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 180.177.76.209
推 visor:(1) 10000 * (rand() % 1000) + rand() % 10000 ?? 05/24 10:18
→ tinlans:現在的 RAND_MAX 沒這麼小,大都是 0x7fffffff。 05/24 11:29
→ tinlans:真的要大於這數字的,找加密函式庫提供的大數亂數吧。 05/24 11:29
→ tropical72:reply tinlans:my complier(VC6.0) RAND_MAX = 36767. 05/24 20:43
→ tropical72:thx to visor ^^ 05/24 20:43