我所要做的是生成一些随机数(-1〈x〈1),然后将它们保存在数组中。p[i] =(double)2*rand()/RAND_MAX-1;
到目前为止没有错误(随机数是合理生成的),但当我试图从数组中获取值时出现了问题。q += p[i]*p[j]
数组p[j]给出了奇怪的值,如0(是,可以是零,但数组连续给0看起来很奇怪)或非常大的值,例如280403100133025176199821455822674425889165972183938321172200255006450453290907333581764616022613874266224862602953806013128591375888354532283482625802 24.000000。不总是,但有时。
我想应该没有错误。我检查了索引i和j都在数组范围内。我有没有犯错误?我在下面附上了我的代码。(我的代码正在计算一个完全没有意义的东西,所以你不必关心这个。)
谢谢你!
#include <stdio.h>
#include <stdlib.h>
int main(){
FILE *file;
file = fopen("result.txt","w");
int N = 10000;
double p[N]={0};
for(int i=0;i<N;i++){
p[i] = (double)2*rand()/RAND_MAX-1; //range[-1, 1]
}
int j;
double x,y;
for(int n=-100; n<=100; n++){
double q = 0;
for(int i=0; i<N; i++){
j = (i+n)%N;
q += p[i]*p[j];
}
fprintf(file,"%d\t%f\n",n,q);
}
fclose(file);
}
1条答案
按热度按时间dbf7pr2w1#
p[N]={0};
在C中无效。无法初始化可变大小数组您可以轻松地调试问题:
当你运行它的时候,你会注意到
j
是总是负的。我不知道你想要计算什么,但是你可能想要这个指数的绝对值https://godbolt.org/z/7dqM49b8a