m0_70868035 2022-06-11 16:11 采纳率: 100%
浏览 95
已结题

MATLAB轮盘算法,

img


unidind函数产生均气分布随机整数,可通过该区数产生 38 以内的随机整数模拟小球随机落在38个卡
槽中的一个。

  • 写回答

1条回答 默认 最新

  • 早睡ing 2022-06-11 17:11
    关注
    A1 = [8,10,12,28,30,32];
    A2 = [1,2,3,4,5,6,7,8,9,10,11,12];
    b1 = 4;
    b2 = 2;
    for i = 1 : 1000
        w(i) = roulette(b1, A1, b2, A2);
    end
    % 统计 第二问
    t = tabulate(w);
    % 平均值
    mean = t(:,1)'*t(:,3)/100;
    % 方差
    v = 0;
    n = size(t,1);
    for i = 1 : n
        v = v + (t(i,1)-mean)^2 * t(i,3)/100;
    end
    % 实际 第三问
    t1 = zeros(4,2);
    t1(1,:) = [-6, 23/38];
    t1(2,:) = [-2, 9/38];
    t1(3,:) = [14, 3/38];
    t1(4,:) = [18, 3/38];
    % 平均值
    mean_act = t1(:,1)'*t1(:,2);
    % 方差
    v_act = 0;
    n = size(t1,1);
    for i = 1 : n
        v_act = v_act + (t1(i,1)-mean_act)^2 * t1(i,2);
    end
    function w = roulette(b1, A1, b2, A2)
    w = -b1 - b2;
        num = unidrnd(38);
        if ismember(num,A1)
            w = w + b1 * (36-size(A1,2))/size(A1,2);
        end
        if ismember(num,A2)
            w = w + b2 * (36-size(A2,2))/size(A2,2);
        end
    end
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 6月19日
  • 已采纳回答 6月11日
  • 创建了问题 6月11日