Quote:

> I've got big problems with a for loop into another for loop.

> I report below the piece of code.

> ---------------------

> sgenrand(rand() %(RAND_MAX+1)); // Random seed of the pseudorandom sequence

What *exactly* are you doing trying to reduce the output of rand()

modulo RAND_MAX + 1? Are you perhaps thinking that it might return

greater than RAND_MAX? What do you think RAND_MAX means?

More intriguingly, what happens when RAND_MAX == INT_MAX? ;-)

Quote:

> for (int i=0; i< no_steps; ++i)

> {

> double y = genrand1(); // random numbers

> S_t = S_t * exp(R + SD * cndev(y));

> prices[i]=S_t; // The array

I've no idea where prices is declared, or where S_t, R and SD are

initialized.

Quote:

> };

> //..... some manipulations

> double price = sum_c_max* (exp (-r*time)); // The result

Is that `r' meant to be the same as the previous `R'? Are you sure you

want to use the name `time'?

Quote:

> I'd like to calculate "double price" n times with different random numbers

> in order to obtain the average of such values.

> I thought that i needed to put this process into another for loop.

> But i don't know how to do that.

> I did as follows, but that gives wrong results:

> for (int j=0; j< no_paths; ++j)

> {

> sgenrand(rand() %(RAND_MAX+1));

Maybe you want to reinitialize S_t here.

Quote:

> for (int i=0; i< no_steps; ++i)

> {

> double y = genrand1();

> S_t = S_t * exp(R + SD * cndev(y));

> prices[i]=S_t;

> };

> m = *max_element(prices.begin(),prices.end()); // the max value of the

> array

Nope. That's not C. Definitely not.

Quote:

> tx = prices.back(); // the last value

Nor's that.

Quote:

> if (m > bar)

> sum_c_max += max(0.0, tx - X) ;

> }

> double price = sum_c_max * exp (-r*time) / no_paths;

> Could anyone help me?

I doubt it.

-- [mdw]