[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Help-gsl] Re: Random number generator: compiling issue on a Mac (10.4.1
From: |
Marco Tului |
Subject: |
[Help-gsl] Re: Random number generator: compiling issue on a Mac (10.4.11) |
Date: |
Sat, 11 Apr 2009 15:55:52 +0200 |
By the way, if I write instead by terminal simply "g++ -c
random_generator.cpp" I don't receive errors: it seems to be fine. How's
possible?
Thanks again,
Marco Tului.
On Sat, Apr 11, 2009 at 3:52 PM, Marco Tului <address@hidden> wrote:
> Hi all,
> excuse me, I've compiled and installed the GSL on my Mac, running Mac Os
> 10.4.11 (Tiger). Now I'm trying to compile a random number generator class,
> for a library of mine. Here the code:
>
>
> ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
> #ifndef RANDOM_GENERATOR__HPP
> #define RANDOM_GENERATOR__HPP
>
>
> #include <gsl/gsl_rng.h> // here we use the "GNU Scientific Library" (GSL)
> to obtain a random number
> #include <gsl/gsl_randist.h> // to obtain gsl_ran_gaussian_pdf()
> #include <iostream>
> using namespace std;
>
>
> enum Distribution_type {
> NORMAL = 1,
> UNIFORM = 2,
> BINARY = 3
> };
>
>
> class Random_generator {
>
> private:
> const gsl_rng_type *_type_gen;
> gsl_rng *_gen; // 'gen' is the (random) generator
>
> Distribution_type _distr_type;
>
>
> public:
> // default CONSTRUCTOR
> Random_generator( ) {
> _type_gen = gsl_rng_default;
> _gen = gsl_rng_alloc(_type_gen); // in this way we allocate, in the
> standard way, the generator 'gen'
> };
>
> // DESTRUCTOR
> ~Random_generator( ) {
> gsl_rng_free(_gen); // we free the memory associated with the
> generator 'r'
> };
>
>
> double Get_rnd_generator( ) { // by default we assume Distribution_type
> = NORMAL
> return gsl_ran_gaussian(_gen, 1) ;
> };
>
>
>
> double Get_rnd_generator(Distribution_type distr_type_init) {
> if(distr_type_init == NORMAL) {
> return gsl_ran_gaussian(_gen, 1);
> }
> else if(distr_type_init == UNIFORM) {
> // return sample da distribuzione uniforme...
> }
> else if(distr_type_init == BINARY) {
> // return sample da distribuzione binaria
> }
> };
>
>
>
> // vv implementare delle funzioni di interfaccia, ad esempio per far in
> modo ci sia controllo sul corretto valore
> // di sigma (che non sia negativo) etc.
>
>
> /*
> // CONSTRUCTOR for obtaining a random number from a Gaussian
> distribution,
> // centered in the desired value and with the requested sigma
> Random(double mu, double sigma) {
> double x, z;
> type_gen = gsl_rng_default;
> gen = gsl_rng_alloc(type_gen); // in this way we allocate, in the
> standard way, the generator 'r'
>
> x = gsl_ran_gaussian(gen, sigma);
> z = mu + x;
> Set_random(z);
> };
> */
>
>
> };
>
>
> #endif
> ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
>
>
> By terminal, I write "g++ -c random_generator.cpp -lgsl -lgslcblas -lm" but
> I obtain in response the following errors:
>
> i686-apple-darwin8-g++-4.0.1: -lgsl: linker input file unused because
> linking not done
> i686-apple-darwin8-g++-4.0.1: -lgslcblas: linker input file unused because
> linking not done
> i686-apple-darwin8-g++-4.0.1: -lm: linker input file unused because linking
> not done
>
> I don't understand this: could anyone help me? Please, it's important, and
> quite urgent.
>
>
>
> Thanks in advance,
>
> Marco Tului.
>