【发布时间】:2014-03-10 01:21:56
【问题描述】:
我将直接进入:我的教授给了我一段代码,该代码应该生成随机数,而我的编译器 (g++) 不断抛出这些错误:“警告:指向算术中使用的函数的指针 [- Wpointer-arith] rand[i]=((double) rand() / (static_cast(RAND_MAX) + 1.0))* (high - low) + low;" “错误:从类型 'std::vector' 到类型 'double' 的无效转换 rand[i]=((double) rand() / (static_cast(RAND_MAX) + 1.0))* (high - low) + low;” 它们都指向生成随机数的函数。问题是我以前用过这个完全相同的功能,而且效果很好。我真的不知道可能出了什么问题。任何帮助将不胜感激。请注意,我对 C++ 还有些陌生。
我已包括:cstdlib、stdio.h、cstdio、time.h、vector、iomanip、fstream、iostream、cmath。 这是我现在拥有的代码:
int main() {
int N=20000;
std::srand((unsigned)time(0));
for(int i = 0; i<(N+1); ++i) {
double high = 1.0, low = 0.0;
rand[i]=((double) rand()/(static_cast<double>(RAND_MAX) + 1.0))*(high - low) + low;
}
return 0;
}
【问题讨论】:
-
错字?问题是
rand[i]...rand是一个函数而不是一个数组。一旦你解决了这个问题,你应该会很好。 -
确实,您将
rand用作函数和数组 -
相关:如果可能,请认真考虑使用
<random>库。 It really is the cat's whiskers. -
啊,谢谢!修好了,检查了数字,一切看起来都很好!