作者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