用MATLAB仿真排球比赛

用MATLAB仿真排球比赛,matlab,simulation,Matlab,Simulation,我想模拟以下情况: 我们有两支排球队: ‍‍‍‍‍‍ ‍‍L=本地的‍‍‍‍‍‍ ‍‍ ‍‍‍‍‍‍ ‍‍ ‍‍‍‍‍‍ ‍‍ ‍‍‍‍‍‍ ‍‍ ‍‍‍‍‍‍ ‍‍及‍‍‍‍‍‍ ‍‍ ‍‍‍‍‍‍ ‍‍ ‍‍‍‍‍‍ ‍‍ V=客人 假设L有18分,p1=0.6的概率得分下一分,而V有20分,p2=0.54的概率得分下一分 到目前为止,我尝试的是以下代码:- % Simulating a volleyball game p1 = 0.6; % Introducing the probab

我想模拟以下情况:
我们有两支排球队:
‍‍‍‍‍‍ ‍‍L=本地的‍‍‍‍‍‍ ‍‍ ‍‍‍‍‍‍ ‍‍ ‍‍‍‍‍‍ ‍‍ ‍‍‍‍‍‍ ‍‍ ‍‍‍‍‍‍ ‍‍及‍‍‍‍‍‍ ‍‍ ‍‍‍‍‍‍ ‍‍ ‍‍‍‍‍‍ ‍‍ V=客人

假设L有18分,p1=0.6的概率得分下一分,而V有20分,p2=0.54的概率得分下一分

到目前为止,我尝试的是以下代码:-

% Simulating a volleyball game

p1 = 0.6;  % Introducing the probabilities of both teams
p2 = 0.54;
n=25;      % The maximum number of points in a set

L=18;
V=20;

t1=(rand<p1);
t2=(rand<p2);

while n-L>0 || n-V>0

if t1==1
    L=L+1;
elseif t2==1
    V=V+1;

end
end 
disp([L V])
%模拟排球比赛
p1=0.6;%介绍两个团队的概率
p2=0.54;
n=25;%集合中的最大点数
L=18;
V=20;
t1=(rand0
如果t1==1
L=L+1;
elseif t2==1
V=V+1;
结束
结束
显示([LV])
问题是,它似乎没有尽头,当一支球队得到25分时,我无法找到停止比赛的方法。另一个问题是,由于程序没有显示任何内容,我无法检查循环是否正常工作。我认为程序没有正确计算
t1
t2
,因为它正在执行我的任务t具有相同的随机数。
如何解决这些问题

编辑:

我还想运行这10000次,并计算每个团队的获胜百分比!

首先,循环的条件是不正确的。其次,在每次迭代中,
t1
t2
的值不断增加。第三,当
t1
t2
为零,循环将始终为真。第四,假设概率存在错误,因为概率之和必须等于1

修改后的代码及其更正如下:

% The probabilities are incorrect but I'm leaving them as it is
p1 = 0.6;   
p2 = 0.54;
n = 25;     % The maximum number of points in a set

Result=zeros(1,1000);       % Pre-allocation

for k=1:1000
    L=18;
    V=20;

    while n-L>0 & n-V>0     % Notice the condition
        t1 = (rand<p1);
        t2 = (rand<p2);

        if t1==1
            L=L+1;
        elseif t2==1
            V=V+1;
        end
    end
    Result(k)=L>V ;         % Storing L's victories as 1 and V's victories as 0
end

Win_Percent_L = length(find(Result))/1000
Win_Percent_V = 1-Win_Percent_L
%概率是不正确的,但我还是保持原样
p1=0.6;
p2=0.54;
n=25;%集合中的最大点数
结果=零(11000);%预分配
对于k=1:1000
L=18;
V=20;
当n-L>0&n-V>0%时,请注意该情况

t1=(rand首先,循环的条件是不正确的。第二,在每次迭代中,
t1
t2
的值都有一个恒定的加法。第三,当
t1
t2
都为零时,循环将始终为真。第四,循环中存在错误假设概率,因为概率之和必须等于1

修改后的代码及其更正如下:

% The probabilities are incorrect but I'm leaving them as it is
p1 = 0.6;   
p2 = 0.54;
n = 25;     % The maximum number of points in a set

Result=zeros(1,1000);       % Pre-allocation

for k=1:1000
    L=18;
    V=20;

    while n-L>0 & n-V>0     % Notice the condition
        t1 = (rand<p1);
        t2 = (rand<p2);

        if t1==1
            L=L+1;
        elseif t2==1
            V=V+1;
        end
    end
    Result(k)=L>V ;         % Storing L's victories as 1 and V's victories as 0
end

Win_Percent_L = length(find(Result))/1000
Win_Percent_V = 1-Win_Percent_L
%概率是不正确的,但我还是保持原样
p1=0.6;
p2=0.54;
n=25;%集合中的最大点数
结果=零(11000);%预分配
对于k=1:1000
L=18;
V=20;
当n-L>0&n-V>0%时,请注意该情况

t1=(randRight:)我怎样才能对这个游戏进行更多的模拟(我的意思是复制10000次)?jajajaa是的jajaja对:)请稍等:)@Sadar_Usama如果我想知道每支球队的比赛百分比,我必须将V或L得25分的所有情况相加,然后除以10000,但我怎么能计算呢?对,对不起,我认为这不值得,但我做的是,如果L==n L1=[L];如果V==n V1=[V]结束;结束,但我想没有work@Sadar_Usama为什么?JJAJA我知道我做错了,但你能帮我吗?对:)我怎样才能对这个游戏进行更多的模拟(我的意思是复制10000次)“jajajaa是的jajaja对:)请稍等:)@Sadar_Usama如果我想知道每支球队的比赛百分比,我必须将V或L得25分的所有情况相加,然后除以10000,但我怎么计算呢?对,对不起,我认为这不值得,但如果L==n L1=[L],我做的是下面的事情;如果V==n,则结束V1=[V];结束了,但我想没有work@Sadar_Usama为什么?我知道我做错了,但你能帮我吗?