作业帮 > 综合 > 作业

一道matlab编程题,

来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/07/21 05:01:31
一道matlab编程题,
这是一道随机游走模型,10人互相间两两赌博,问多少次后只剩一人.本人用产生均匀分布随机数模拟二人赌博过程,b为10人手中钱的数量,当b(i,1)为0时,将 i 移到序列后面,前面非零量继续赌博.但是我的结果不是b只剩第一项为100,而是前几项都非零,
s=0
k=10
b=ones(10,1)
for m=1:1:2
    for n=2:1:10
      if b(n,1)>0
        for i=1:1:k-1
            if b(i,1)<1
                for j=i:1:k-1
                    b(j,1)=b(j+1,1)
                end
            end
        end
        k=nnz(b)
        if mod(k,2)>0
            g=k-2
        else mod(k,2)<=0
            g=k-1
        end
        for i=1:2:g
            a(i)=rand(1);
            if a(i)>=0.5
                b(i,1)=b(i,1)+1
                b(i+1,1)=b(i+1,1)-1
            else a(i)<0.5
                b(
一道matlab编程题,
你好歹把你的代码以文本的形式发一份,让别人可以复制调试啊,难道让别人再敲一遍,无语
纯属建议,楼主勿喷
这个问题最终得到的矩阵b是一定的,即为
b=[10 0 0 0,...]
因为总钱数就10块钱,变得只是次数,即s.
楼主你把问题搞得那么复杂干什么,我帮你另外编了一个,你的程序太绕了,恕我真心看不懂
clc;clear;
s=0;
k=10;
b=ones(10,1);
while k>1
if mod(k,2)>0
g=k-2;
else
g=k-1;
end
for i=1:2:g
a=rand(1);
if a>=0.5
b(i,1)=b(i,1)+1;
b(i+1,1)=b(i+1,1)-1;
else
b(i,1)=b(i,1)-1;
b(i+1,1)=b(i+1,1)+1;
end
s=s+1;
end
b
k=nnz(b);
b=b(b>0);
b(10)=0;
b
end
s
再问: 非常谢谢,,前面的我都懂了,最后 b=b(b>0); b(10)=0; 是什么意思啊,我matlab就学了一点点
再答: >> b=[1 2 0 3 0 5 6 7 0 0 1] b = 1 2 0 3 0 5 6 7 0 0 1 >> b=b(b>0) b = 1 2 3 5 6 7 1 >> b(12)=0 b = 1 2 3 5 6 7 1 0 0 0 0 0 通过上面这个试验,你应该知道这段代码的意思和作用了吧。 补充:假如一个A是一个1*6的矩阵,你如果令A(9)=x,那么A矩阵被你扩展了,并且A(7)和A(8)默认为0,示例如下: >> A=[1 2 3 4 5 6] A = 1 2 3 4 5 6 >> A(9)=2 A = 1 2 3 4 5 6 0 0 2 >> A(9)=0 A = 1 2 3 4 5 6 0 0 0