选数字 问题模拟

      最近算是心浮气躁,每天工作的内容总是不在一个点上,需要搜索一个问题,总是从一个x跳到另一个x,一天下来,虽然感觉貌似知道了很多,但是,实际细思,又发现好多人物没有完成。也许,人总是需要迷茫一段时间吧,今天无意看到了这个问题,刚好前几天媳妇大人也问我这个问题,大概想了一下觉得模拟仿真难度不大,所以就大概仿真得出了如下结果。

  • 问题描述

      在一个教室中,教授让学生选择1-100中任何一个整数字,优胜者为最接近全班平均数2/3的人.

  • 问题分析

     因为是模拟,所以必然包括一些假设,同时也得考虑假设的合理性,基于此,大概有如下假设:

  1. 假设教师里边学生比较多,大家都是有一定的判断力,同时存在某个最聪明的学生,他可以得到最佳答案;
  2. 假设大家刚开始觉得对方(包括自己)都会随机均匀的从1-100之间选数字;
  3. 假设思考过程是迭代过程,每次选取的数字都会在前次选择数字的均值周围选取,服从高斯分布;

  • 问题仿真
%       在一个教室中教授让学生选择1-100中任何一个整数字,优胜者为最接近全班平均数2/3的人.
%   这个游戏很有意思,因为当1-100随机选择,如果人数够多,平均数肯定是50,那么获胜的数字就是
%   33.而当大多数人选择33时,获胜的数字就该是22,以此类推。所以最优方案应该是:所有学生都选
%   择1.
%   目的:迭代模拟过程
%   作者:姜志宇
%   时间:2014/10/30
%   A Starting Point for Myself


% 1 Parameters
num_people = 1000000;
digit_choice = zeros(num_people,1);
num_iter = 100;
var = 10;
figure(1);
% 2.1 Initialization
digit_choice = randi(100,[num_people 1]);
digit_mean = mean(digit_choice);
subplot(311);hist(digit_choice,100);
% 3.1 Iteration
temp_stop = digit_choice;
for iter =1:num_iter
    
    var_iter = round(min(var,digit_mean/3));
    digit_choice = round(2/3*digit_mean)+(randi(2*var_iter+1,[num_people 1])-var_iter-1);
    digit_mean = mean(digit_choice);
    pause(0.3);
    [nelements,xcenters] = hist(digit_choice,100);
    nelements(find(xcenters<1 & xcenters>100)) = [];
    xcenters(find(xcenters<1 & xcenters>100)) = [];
    subplot(312);bar(xcenters,nelements);
    subplot(313);hold on;plot(iter,digit_mean,'ro');plot(iter,var_iter,'*');
    if(temp_stop == digit_choice) % 判断终止条件
        disp(sprintf('The last interation is %d\n',iter));
        disp(sprintf('The mean of last iteration is %d\n',digit_mean));
        break;
    else
       temp_stop = digit_choice;
    end
end
  • 结论

      最终仿真显示,最优结果应该是1,也满足实际情况。关于参数高斯分布的方差,通过测试多个不同方差,发现对实验结果没有影响,只会影响迭代收敛次数。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值