作者Bakltube ()
看板C_and_CPP
標題[問題] 0~1 之間的亂數
時間Wed Apr 29 20:36:16 2009
爬過以前文章
但是當我輸入
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
1F:→ sdyy:有搭配srand()嗎? 04/29 20:39
2F:→ Bakltube:有 04/29 20:40
※ 編輯: Bakltube 來自: 140.112.181.202 (04/29 20:40)
3F:推 chrisdar: for (int i = 0; i < 20; ++i) { 04/29 20:42
4F:→ chrisdar: srand( (unsigned)time( NULL ) ); 04/29 20:42
5F:→ chrisdar: cout << rand() / (RAND_MAX + 1.0) << endl; 04/29 20:42
6F:→ chrisdar: } 該不會是這樣吧 04/29 20:42
我寫這樣
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)
7F:→ Bakltube:改成NULL好像沒差 04/29 20:43
8F:→ llewxam:要不要改成 double(rand()) 試試看 04/29 20:47
9F:→ Bakltube:是過了@@ 04/29 20:47
10F:→ Bakltube:超怪的!! 04/29 20:48
11F:推 chrisdar:這個沒辦法 亂數種子拿時間當變數 輸入差不多 輸出就差不 04/29 20:50
12F:→ chrisdar:多 04/29 20:50
13F:→ Bakltube:那我要怎嚜樣才可以取出0~1之間的亂數??? 04/29 20:51
14F:→ chrisdar:隔天再取一次 就會差比較多了 04/29 20:52
15F:→ Bakltube:= =" 04/29 20:53
16F:→ Bakltube:這是亂數嗎?? 04/29 20:53
17F:→ chrisdar:rand() 函數只保證你重複取用他的時候會很亂 04/29 20:54
18F:推 david74:可以在 srand 之後,再 srand 一次 Ex: srand(rand()) 04/29 20:54
19F:推 chrisdar:to 樓上 差異不大 04/29 20:56
20F:推 sdyy:不然先srand(time(NULL));再srand(rand()*rand()); 04/29 20:59
21F:→ sdyy:剛試一下差異較多 04/29 20:59
23F:推 VictorTom:雖然stdlib的rand()只會傳0~32767間回來, 但也不至於都 04/29 21:47
24F:→ VictorTom:是0.7xxx吧@_@" 請問time.h和stdlib.h有include嗎XD 04/29 21:48
25F:推 littleshan:都是 0.7xxx 是因為它的程式只取第一個亂數 04/29 22:25
26F:→ littleshan:把第一個亂數丟掉 取第二個就會開始亂了 04/29 22:26
27F:→ MOONRAKER:是底 多取幾個 五發以內好像都會不夠亂 04/29 22:28
28F:推 ast9869:(double)(rand()/32767) ? 沒試過 04/30 01:35
29F:推 plover:google 1013904223L XD 04/30 01:38
30F:推 VictorTom:ast的那個應該會除出一堆0偶爾一個1吧?? rand()回傳int 04/30 01:50
31F:→ VictorTom:不是嗎?_? 04/30 01:50