作者DreamLoser (金属制品)
看板C_and_CPP
标题[问题] 完全想不透 c和c++的乱数
时间Thu Jun 18 21:42:31 2009
多谢之前大大的帮忙,小弟完成了庞大的c++程式
但因为要写成CUDA程式 所以我得要把C++翻译成C
但翻译完执行C的时候发现有很大的问题
首先最大的我发现的BUG在於乱数
我不知道是不是include的问题
但如果是c++的话
int i;
double c;
for(i=0;i<10;i++)
{c=rand()/32767; cout<<c<<endl;
}
就可以列印出十个不同的从0~1的random number
但如果是C
这是我全部的程式测试码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int main() {
srand(12345);
int a, b;
double c[10];
//开始乱数 并且列印
for(a=0;a<10;a++){
c[a]=rand()/(double)RAND_MAX; // 这行在添一个 printf("%d\n,c[a])
//会结果很不同於下面那个printf的结果
}
for(b=0;b<10;b++){
printf("%d\n",c[b]);
}
}
我完全搞不懂c的乱数到底是怎麽运作的 完全连动也不能动
有三个问题
1.乱数只会一直连续出现同一个 并不会像C++一样回圈出现不同乱数
2.把c[a]不要用array的方式 用普通的变数x 也是一样的结果
3.用了RAND_MAX结果出来的乱数超大 跟本不会介於0~1
拜托大大解惑
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.167.75.124
1F:推 mryf:printf("%lf\n", c[b]) 06/18 21:44
2F:→ DreamLoser:谢谢!!原来是输出形式的问题 我问了笨问题了T_T 06/18 22:16