[問題] 亂數上限(取 > RAND_MAX 亂數) 問題

看板C_and_CPP作者 (藍影)時間15年前 (2010/05/24 05:59), 編輯推噓1(104)
留言5則, 3人參與, 最新討論串1/1
遇到的問題: (題意請描述清楚) 為避免以後我還會遇到類似的問題, 我把相關的問題都一起先問了.. 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

05/24 10:18, , 1F
(1) 10000 * (rand() % 1000) + rand() % 10000 ??
05/24 10:18, 1F

05/24 11:29, , 2F
現在的 RAND_MAX 沒這麼小,大都是 0x7fffffff。
05/24 11:29, 2F

05/24 11:29, , 3F
真的要大於這數字的,找加密函式庫提供的大數亂數吧。
05/24 11:29, 3F

05/24 20:43, , 4F
reply tinlans:my complier(VC6.0) RAND_MAX = 36767.
05/24 20:43, 4F

05/24 20:43, , 5F
thx to visor ^^
05/24 20:43, 5F
文章代碼(AID): #1B-QLJnn (C_and_CPP)