EL problema en si es el output, no me evalúa bien las cosas. Les pongo lo que he hecho:
Código C++:
Ver original
#include <iostream> #include <cstdlib> #include <ctime> using namespace std; double func_esperanza(double y) { double f=0; if (y>200) { f=y*10-200*5-2*(y-200); //si hay mas demanda que 200 } else { f=y*10-200*5+.5*(200-y); //hay menos demanda que 200 } return f; } double define_dato(double aux) { double y; if ((aux>0) && (aux<=(45/300))) { y=100; } else if ((aux>(45/300)) && (aux<=(95/300))) { y=150; } else if ((aux>(95/300)) && aux<=((155/300))) { y=175; } else if ((aux>(155/300)) && (aux<=(215/300))) { y=200; } else if ((aux>(215/300)) && (aux<=(270/300))) { y=250; } else if ((aux>(270/300)) && (aux<=(1))) { y=300; } else { y=0; } return y; } double genera_dato() { double R=RAND_MAX; //genero los aleatorios uniforme(0,1) return dato; } int main() { double aux,aux1,p=0; double suma=0; for (int i=0; i<10; i++) { aux= genera_dato(); //genero el numero random cout<<aux<<endl; aux1= define_dato(aux); //lo evaluo en que intervalo cae cout<<aux1<<endl; p=func_esperanza(aux1); //calculo su esperanza cout<<p<<endl; suma+=p; aux=0; aux1=0; p=0; } cout<<suma/10; //aplico montecarlo return 0; }
Este es el output que me ha salido:
0.0765
300
1800
0.736337
300
1800
0.623635
300
1800
0.43767
300
1800
0.914628
300
1800
0.153492
300
1800
0.737618
300
1800
0.149986
300
1800
0.80858
300
1800
0.797272
300
1800
1800
Cabe mencionar que uso Xcode(Mac, Mountain Lion). ¿Alguna sugerencia?