蒙特卡洛的方法又称为随机取样法,所以他是根据大量随机数来跑出满意解
比如上一章用遗传算法的完全可以用蒙特卡洛方法(一口血吐出....)
以下为c语言代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
int check(int x[])
{
if (x[0]+x[1]+x[2]+x[3]+x[4]>400)
return 0;
if (x[0]+2*x[1]+2*x[2]+x[3]+6*x[4]>800)
return 0;
if (2*x[0]+x[1]+6*x[2]>200)
return 0;
if (x[2]+x[3]+5*x[4]>200)
return 0;
return 1;
}
int main()
{
int x[5];
int ans[5];
int i,j,max;
srand(time(NULL));
max=-2;
memset(ans,0,sizeof(ans));
for (i=0;i<100000;i++)
{
for (j=0;j<5;j++)
x[j]=rand()%100;
if (check(x))
if ((x[0]*x[0]+x[1]*x[1]+x[2]*x[2]*3+4*x[3]*x[3]+2*x[4]*x[4]-8*x[0]-2*x[1]-3*x[2]-x[3]-2*x[4])>max)
{