[問題] 如何產生範圍 10^-7 ~ 10^-6 的亂數

看板C_and_CPP作者時間11年前 (2013/08/09 18:40), 編輯推噓2(2010)
留言12則, 5人參與, 最新討論串1/1
※ 引述《akka5678 ()》之銘言: : 開發平台(Platform): (Ex: VC++, GCC, Linux, ...) : 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) : 問題(Question): : 餵入的資料(Input): : 預期的正確結果(Expected Output): : 錯誤結果(Wrong Output): : 程式碼(Code):(請善用置底文網頁, 記得排版) : 補充說明(Supplement): : 各位大神 : 我想要產生10^-7~10^-6之間的亂數 : 但rand似乎無法到這麼多 : 是否能詳細的教我 : 感謝 #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int a; double b; srand(time(NULL)); a=(rand()%901)+100; b=a/1000000000; printf("Number is %f.\n",b); } 我是用除的試試看 但不知道哪裏有錯 每次都產生0 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 101.15.203.83

08/09 18:49, , 1F
新手常見錯誤: 拿兩個整數做除法想得到小數
08/09 18:49, 1F

08/09 18:50, , 2F
正確的方式是將其中之一變成浮點數即可
08/09 18:50, 2F

08/09 18:50, , 3F
例如在整常數的後面加上 .0
08/09 18:50, 3F

08/09 18:51, , 4F
或是直接加 (double) 轉型
08/09 18:51, 4F

08/09 19:03, , 5F
大大是說b=(double)a/1000000000或1000000000.0嗎?試過
08/09 19:03, 5F

08/09 19:03, , 6F
後還是不行耶,小的資質駑鈍
08/09 19:03, 6F

08/09 20:40, , 7F
貌似位數印不夠
08/09 20:40, 7F

08/09 20:50, , 8F
改成1000000000.0並用%.9f就有東西拉
08/09 20:50, 8F

08/11 16:31, , 9F
照原PO方法改正確,應該還是辦不太到,大多用 rand() 最大值
08/11 16:31, 9F

08/11 16:32, , 10F
是 32767 , 精度必須要做一些處理 , 或用更好的亂數函式 .
08/11 16:32, 10F

08/11 16:45, , 11F
rand()最大值是RAND_MAX @@
08/11 16:45, 11F

08/11 18:40, , 12F
@tingyushyu : 是, 只是我手邊 compiler 大多是 32767.
08/11 18:40, 12F
文章代碼(AID): #1I1CStu4 (C_and_CPP)