Matlab掷骰子游戏

问题描述 投票:-1回答:1

enter image description here

问题是这个。经过考虑,我认为如果满足此条件,代码将成功。

设置n = 0,统一生成1〜6的整数之一;如果生成1,则加一个获胜;否则,生成n则加一个失败; n ++,4。如果n

但我不知道该怎么做。能帮我吗

N=100;
win=0;
lose=0;
a=randi([1 6],1,1);    
n=0;
p=0;
while n<N
  if a==1
    win=win+1;
    else
      lose=lose+1;
      n++
  endif
endwhile
matlab
1个回答
0
投票

您的代码中有几个错误:

  • 您仅生成一个随机数,因为对randi的调用不在while循环之内。因此,您要测试a==1 N次,其中a的值始终相同
  • 来自上一个错误的一部分,您仅在n条件下递增计数器else

可能的实现方式如下,您可以将代码包含在for循环中,以检查尝试次数所占的百分比;您还可以添加参考值1/6 %

% Define the winning number
win_value=1
for N=1:1000
   % Generate N random values
   result=accumarray(randi([1 6],N,1),1);
   % Count the wins 
   win(N)=result(win_value);
   Pct_win(N)=win(N)/N*100;
end
plot(Pct_win)
hold on
plot([1 N],[1/6 1/6]*100,'r','linewidth',2)
xlabel('Attempts')
ylabel('Win %')
legend('Wins','Ref')

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.