【MATLAB】一种偶然性更小的抽奖代码

编程入门 行业动态 更新时间:2024-10-22 14:26:39

【MATLAB】一种<a href=https://www.elefans.com/category/jswz/34/1691324.html style=偶然性更小的抽奖代码"/>

【MATLAB】一种偶然性更小的抽奖代码

【MATLAB】一种偶然性更小的抽奖代码

  • 原理
  • 代码
  • 其他

由于突发事件,需要进行“抽奖”。大家都怕中奖,所以让我搞一个更“公平”的代码来抽。

by 今天不飞了


原理

直接抽偶然性太大了,所以用“击中”策略。
把所有参与者“绑在靶子上”,随机射击N枪,统计每人“中弹数”,并进行排序。
后续就可以排序颁奖,如:
最高的一等奖,后两个二等奖,接着三个三等奖……


代码

clear; close all; clc% 提供你的成员表(可以改成名字或编号等等)
list = {'A','B','C','D','E'};% --------------------------------------
% 开始
num = length(list); % 成员数
iter = 100; % 射击单量(每多一个人,增加100发子弹),增大该数字以提高稳定性
disp(['总计',num2str(num),'人,射击',num2str(num*iter),'次'])
% 射击
A = uint8(ceil(rand(num*iter,1)*num));
B = zeros(length(A)+1,num,'int16');
% 统计
for n = 1:length(A)B(n+1,:) = B(n,:);    B(n+1,A(n)) = B(n+1,A(n))+1;
end
% 显示过程
subplot(211)
for n = 1:ceil(iter/100):length(A)bar(B(n,:))axis([0,num+1,0,iter*1.5])xticks(1:num)xticklabels(list)ylabel('\fontsize{18}中枪')drawnow
end
% 排序
[res,idx] = sort(B(end,:),'descend');
list = list(idx);
% 显示排序
subplot(212)
bar(res)
axis([0,num+1,0,iter*1.1])
xticks(1:num)
xticklabels(list)
ylabel('\fontsize{18}中枪')
resstr = cell(num);
for n = 1:numresstr{n} = num2str(res(n));
end
text((1:num)-0.5,double(res)+500,resstr)% 添加你的颁奖规则
% 略

其他

  1. bilibili搜“今天不飞了”了

更多推荐

【MATLAB】一种偶然性更小的抽奖代码

本文发布于:2024-02-16 20:05:17,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1691323.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:偶然性   更小   代码   MATLAB

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!