本人完全编程小白,摊上这么一道题目:街头常见一类“摸球游戏”,一袋装有16个大小形状相同的玻璃球,其中8个白色,8个红色,游戏者从中一次摸出8个,8个球中,两种颜色出现如下比数时,摸球者可得到相应的“奖励”或“惩罚”。
请用蒙特卡洛方法求解。
请问什么是蒙特卡洛方法。。怎么解。。。
亲,如果一定要用蒙特卡洛方法呢。。。
追答rand('state',sum(100*clock));
n=1e6;
A=0;B=0;C=0;D=0;E=0;
for i=1:n
examp=randperm(16);
num=sum(examp(1:8)<=8);
if num==0||num==8
A=A+1;
elseif num==1||num==7
B=B+1;
elseif num==2||num==6
C=C+1;
elseif num==3||num==5
D=D+1;
else
E=E+1;
end
end
pa=A/n;pb=B/n;pc=C/n;pd=D/n;pe=E/n;
ep=10*pa+1*pb+0.5*pc+0.2*pd-3*pe;
我对于matlab是零基础.......几乎完全不懂~求具体的编程语言......
追答unifrnd(A,B) 最核心的就是它了。。。返回A B之间的一个随机数。。比如你连续调16次用unifrnd(0,1)一次结果是假如结果依次是00000000(假定0是白色球1是红色球)那么就是8个白是10分。这就相当于蒙特卡洛方法模拟一次。。。你循环1000次就相当于模拟1000次抓球。具体要你求什么你也没写出来。求N次以后的奖金罚金情况?
追问嗯!就是问玩这个游戏值不值!亲。。为什么木有回音了TAT