C programming, GSL vector library, error: incompatible type for argument 1 of 'gsl_rng_uniform'
C programming, GSL vector library, error: incompatible type for argument 1 of 'gsl_rng_uniform'
我正在 Windows OS 的代码块中编程。我不得不在下面的代码中使用一些 GSL 库,但在第 13 行出现错误,'gsl_rng_uniform
的参数 1 类型不兼容
double randomBR = gsl_rng_uniform(r)*360+6;
而且我不知道如何修复它。在错误消息下,gsl_rng.h 文件中的第 150 行注释显示:"expected 'const struct gsl_rng *' but argument is of type 'double' ".
#include <stdio.h>
#include <gsl_vector.h>
#include <gsl_rng.h>
int main()
{
gsl_vector*vec=gsl_vector_alloc(100);
double z, max, min, r;
int k=100, i, pos;
for (i=0; i<k; i++){
double randomBR = gsl_rng_uniform(r)*360+6;
z=((int)(gsl_rng_uniform)(r)*360+6);
gsl_vector_set(vec, i, z);
}
max=gsl_vector_max(vec);
pos_vector_max_index(vec);
min=gsl_vector_min)(vec);
pos_vector_min_index(vec);
if (max == 360)
{
printf("Max number generated in box %d", pos);
}
if (max < 366)
{
printf("Max number is %f, position %d", max, pos);
}
return 0;
}
根据GNU Scientific Library – Reference Manual: Sampling from a random number generator,gsl_rng_uniform()
会接受const gsl_rng * r
,不会接受double
,也就是r
的类型。
通过gsl_rng_alloc()
初始化一个随机数生成器,并传递初始化的随机数生成器。
函数原型为
double gsl_rng_uniform (const gsl_rng * r)
显然它需要一个 const gsl_rng*,而不是 double。
阅读有关 GSL 文档的更多信息,您必须首先使用 gsl_rng_alloc:
初始化它来获取 rng
gsl_rng * r = gsl_rng_alloc (gsl_rng_taus);
然后将 gsl_rng r 传递给统一函数以获得所需的随机数。
尝试阅读此处的文档:
http://www.gnu.org/software/gsl/manual/html_node/Sampling-from-a-random-number-generator.html
我正在 Windows OS 的代码块中编程。我不得不在下面的代码中使用一些 GSL 库,但在第 13 行出现错误,'gsl_rng_uniform
的参数 1 类型不兼容double randomBR = gsl_rng_uniform(r)*360+6;
而且我不知道如何修复它。在错误消息下,gsl_rng.h 文件中的第 150 行注释显示:"expected 'const struct gsl_rng *' but argument is of type 'double' ".
#include <stdio.h>
#include <gsl_vector.h>
#include <gsl_rng.h>
int main()
{
gsl_vector*vec=gsl_vector_alloc(100);
double z, max, min, r;
int k=100, i, pos;
for (i=0; i<k; i++){
double randomBR = gsl_rng_uniform(r)*360+6;
z=((int)(gsl_rng_uniform)(r)*360+6);
gsl_vector_set(vec, i, z);
}
max=gsl_vector_max(vec);
pos_vector_max_index(vec);
min=gsl_vector_min)(vec);
pos_vector_min_index(vec);
if (max == 360)
{
printf("Max number generated in box %d", pos);
}
if (max < 366)
{
printf("Max number is %f, position %d", max, pos);
}
return 0;
}
根据GNU Scientific Library – Reference Manual: Sampling from a random number generator,gsl_rng_uniform()
会接受const gsl_rng * r
,不会接受double
,也就是r
的类型。
通过gsl_rng_alloc()
初始化一个随机数生成器,并传递初始化的随机数生成器。
函数原型为
double gsl_rng_uniform (const gsl_rng * r)
显然它需要一个 const gsl_rng*,而不是 double。 阅读有关 GSL 文档的更多信息,您必须首先使用 gsl_rng_alloc:
初始化它来获取 rnggsl_rng * r = gsl_rng_alloc (gsl_rng_taus);
然后将 gsl_rng r 传递给统一函数以获得所需的随机数。
尝试阅读此处的文档:
http://www.gnu.org/software/gsl/manual/html_node/Sampling-from-a-random-number-generator.html