[問題] 0~1 之間的亂數

看板C_and_CPP作者時間15年前 (2009/04/29 20:36), 編輯推噓11(11020)
留言31則, 10人參與, 最新討論串1/1
爬過以前文章 但是當我輸入 double x =( rand() )/ (RAND_MAX + 1.0); 為什麼出來都沒有很亂數(0.1~0.9亂跳) 總是0.7XXXX這樣子變換而已 謝謝 附上程式碼 srand((unsigned int)time(0)); double x =( rand())/ (RAND_MAX + 1.0); -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.181.202

04/29 20:39, , 1F
有搭配srand()嗎?
04/29 20:39, 1F

04/29 20:40, , 2F
04/29 20:40, 2F
※ 編輯: Bakltube 來自: 140.112.181.202 (04/29 20:40)

04/29 20:42, , 3F
for (int i = 0; i < 20; ++i) {
04/29 20:42, 3F

04/29 20:42, , 4F
srand( (unsigned)time( NULL ) );
04/29 20:42, 4F

04/29 20:42, , 5F
cout << rand() / (RAND_MAX + 1.0) << endl;
04/29 20:42, 5F

04/29 20:42, , 6F
} 該不會是這樣吧
04/29 20:42, 6F
我寫這樣 int main() { srand((unsigned int)time(0)); double x =( rand())/ (RAND_MAX + 1.0); if ( x < 0.5) cout << "true"; else cout << "false"; cout<<x<<endl; system("pause"); return 0; } ※ 編輯: Bakltube 來自: 140.112.181.202 (04/29 20:43)

04/29 20:43, , 7F
改成NULL好像沒差
04/29 20:43, 7F

04/29 20:47, , 8F
要不要改成 double(rand()) 試試看
04/29 20:47, 8F

04/29 20:47, , 9F
是過了@@
04/29 20:47, 9F

04/29 20:48, , 10F
超怪的!!
04/29 20:48, 10F

04/29 20:50, , 11F
這個沒辦法 亂數種子拿時間當變數 輸入差不多 輸出就差不
04/29 20:50, 11F

04/29 20:50, , 12F
04/29 20:50, 12F

04/29 20:51, , 13F
那我要怎嚜樣才可以取出0~1之間的亂數???
04/29 20:51, 13F

04/29 20:52, , 14F
隔天再取一次 就會差比較多了
04/29 20:52, 14F

04/29 20:53, , 15F
= ="
04/29 20:53, 15F

04/29 20:53, , 16F
這是亂數嗎??
04/29 20:53, 16F

04/29 20:54, , 17F
rand() 函數只保證你重複取用他的時候會很亂
04/29 20:54, 17F

04/29 20:54, , 18F
可以在 srand 之後,再 srand 一次 Ex: srand(rand())
04/29 20:54, 18F

04/29 20:56, , 19F
to 樓上 差異不大
04/29 20:56, 19F

04/29 20:59, , 20F
不然先srand(time(NULL));再srand(rand()*rand());
04/29 20:59, 20F

04/29 20:59, , 21F
剛試一下差異較多
04/29 20:59, 21F

04/29 21:13, , 22F
04/29 21:13, 22F

04/29 21:47, , 23F
雖然stdlib的rand()只會傳0~32767間回來, 但也不至於都
04/29 21:47, 23F

04/29 21:48, , 24F
是0.7xxx吧@_@" 請問time.h和stdlib.h有include嗎XD
04/29 21:48, 24F

04/29 22:25, , 25F
都是 0.7xxx 是因為它的程式只取第一個亂數
04/29 22:25, 25F

04/29 22:26, , 26F
把第一個亂數丟掉 取第二個就會開始亂了
04/29 22:26, 26F

04/29 22:28, , 27F
是底 多取幾個 五發以內好像都會不夠亂
04/29 22:28, 27F

04/30 01:35, , 28F
(double)(rand()/32767) ? 沒試過
04/30 01:35, 28F

04/30 01:38, , 29F
google 1013904223L XD
04/30 01:38, 29F

04/30 01:50, , 30F
ast的那個應該會除出一堆0偶爾一個1吧?? rand()回傳int
04/30 01:50, 30F

04/30 01:50, , 31F
不是嗎?_?
04/30 01:50, 31F
文章代碼(AID): #19-4d4Wl (C_and_CPP)