我想生成属于指数分布的随机数。我写了这个
int size = atoi(argv[2]);
double *values = (double*)malloc(sizeof(double)*size);
double gamma = atof(argv[1]);
if(gamma<=0.0){
cout<<"Insert gamma"<<endl;
return 0;
}
for(int i=0; i<size; i++){
values[i]=0;
}
srand ( time(NULL) );
for(int i=0; i<size; i++){
x = ((double) rand() / (RAND_MAX));
//cout << random <<endl;
value=(log(1.0-x)/(-gamma));
//count each value
values[value]=values[value]+1.0;
}
但它们并没有涵盖所有向量的大小。它们或多或少覆盖了向量的 10%,其他字段全部为 0,并且由于在我需要进行线性插值之后,我想减少那些“空白空间”,以便每个字段至少有一个值数组的单元格,我该怎么做?例如,我有一个 100000 的向量,只有前 60 个字段填充了值,所以从 60 到 999999 的单元格都是 0,当我进行线性回归时,它们会对公式产生负面影响。