假设A列为部门 B列为姓名,5个部门随机抽取8个人,每个部门至少有一个人
添加辅助列C列,公式为=rand() 即在C列生成随机数
抽取公式为=LET(a,REDUCE("姓名",C2:C32,LAMBDA(x,y,IF(y=MAX(FILTER(C2:C32,A2:A32=OFFSET(y,,-2))),VSTACK(x,OFFSET(y,,-1)),x))),VSTACK(a,TAKE(SORTBY(FILTER(B2:B32,ISNA(MATCH(B2:B32,a,))),RANDARRAY(26)),3)))
思路为:先抽取每部门分数最高的成员,这样可以保证每部门先有一个名额。然后除去刚抽取的5个人,将其余人做随机排列,再取排列后的前3名。
由于C列值为随机数,抽取后3人时又做了随机排列,所以每次刷新时会保证抽取随机的8个不重复人员
用java制作一个随机抽取学号的程序。
功能:根据你输入的学号总数,点击开始,中间的结果就根据学号的总数不停变化,点击停止,结果停止变动。
学号小点名程序需要一个输入框,一个现实结果的lable,两个按钮,以及一个固定大小的窗体。所以先定义好这些变量并且new他们出来。
JTextField num; //输入总人数
JButton start,stop; // 开始、停止按钮
JLabel rs; //显示结果
JPanel jp1,jp;
static boolean isSotp = true; //判断当前状态
public number() {
num = new JTextField(15);
start = new JButton("开始");
stop = new JButton("停止");
rs = new JLabel("0");
jp = new JPanel();
jp1 = new JPanel();
startaddActionListener(this); //添加监听
stopaddActionListener(this);
thisadd(num,BorderLayoutNORTH);
jp1add(rs);
thisadd(jp1,BorderLayoutCENTER);
FlowLayout layout = new FlowLayout();//面板布局
layoutsetAlignment(FlowLayoutCENTER);
jp1setLayout(layout);
jpsetLayout(layout);
jpadd(start);
jpadd(stop);
rssetFont(new Font("宋体", 1, 50));//设置结果样式
rssetForeground(ColorBLUE);
thisadd(jp,BorderLayoutSOUTH);
}
然后添加随机数,这个随机数是随机获得学号的:
public static int getnumber(int n){ //根据你输入的总人数返回随机在人数范围内的一个学号
Random r = new Random();
int r1 = rnextInt(n + 1);
return r1;
}
新建线程内部类:利用线程让“学号”动起来。
class thr extends Thread{
private JLabel rs;
int n;
thr(JLabel rs,int n){
thisrs = rs;
thisn = n;
}
@Override
public void run() {
while(isSotp){
try {
Threadsleep(500);
rssetText(getnumber(n) + "");
Systemoutprintln("1232");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
}
}
}
处理事件类(响应button事件):
@Override
public void actionPerformed(ActionEvent e) {
Object o = egetSource();
if(o == start)
{
String number = numgetText();
try{
int n = IntegerparseInt(number);
isSotp = true;
thr t = new thr(rs, n);
tstart();
}catch(NumberFormatException e2){
Systemerrprintln("格式错误");
numsetText("");
}
}else if(o == stop){
isSotp = false;
}
}
主程序启动:
public static void main(String[] args) { //主程序
number n = new number();
nsetResizable(false);
nsetTitle("学号点名小程序");
nsetDefaultCloseOperation(JFrameEXIT_ON_CLOSE);
nsetSize(250, 200);
nsetVisible(true);
}
Dim xm, n As Integer
Private Sub Command1_Click()
Static k
k = k + 1
If k Mod 2 = 1 Then
Timer1Interval = 20
Command1Caption = "停"
Else
Timer1Interval = 0
Command1Caption = "开始"
End If
End Sub
Private Sub Form_Load()
xm = Array("张三", "李四", "王五", "赵六", "钱七", "孙八", "周九", "吴十", "郑土")
n = UBound(xm) + 1
Text1FontSize = 16
Text1 = ""
Command1Caption = "开始"
End Sub
Private Sub Timer1_Timer()
x = Int(Rnd n)
Text1 = xm(x)
End Sub
将人员按顺序编好,比如编号从1到100
然后用randbetween产生编号范围内的数字,比如=RANDBETWEEN(1,100)可以得到1到100的数字,然后再用这个数字用Vlookup找到对应的名字
1、首先,我们在单词上编辑我们的名字。
2、如何使用PPT进行随机名称抽奖然后在我们的办公室打开它。打开我们的word文件,自动将我们的人员输入我们的ppt。
3、然后选择视图主文件,将文本框居中,并调整文本大小和字体。关闭后,我们可以根据需要调整副本。
4、选择主控后,我们在动画中将显示时间设置为0。从点击开关上取下挂钩。并适用所有。
5、然后输入我们的节目设置并单击设置中的循环节目。确定。
6、之后,我们可以开始随机随机抽签,按S暂停。
以上就是关于excel如何实现分组随机抽奖全部的内容,包括:excel如何实现分组随机抽奖、电脑如何随机抽取人数、用vb编写了这个随机抽取人名的程序,要求一个文本框,一个按钮等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)