用 R 实现考生和考题随机匹配
楚新元 / 2019-05-05
班里有 15 个同学,10 个 topic,其中 5 个 topic 要求出现两次,这样正好 15 个人选择 15 个 topic,用 sample()
函数分别对同学和 topic 做不放回随机抽样,然后组合在一起即可,思路很简单,娱乐一下1。注:这里设置了随机数种子,因为当天是 2019 年 5 月 7 号,所以随机数种子设置为 20190507,方便结果重现,否则每次运行一遍程序,抽样结果可能不同。
#--------------------------------------------------------------------
# 对同学进行随机抽样
#--------------------------------------------------------------------
# 设置随机数种子
set.seed(20190507)
# 同学向量
name = c(
"克甝", "庞秀萍", "刘琦平", "刘冀", "乌云其其克",
"蔡青青", "李梦阳", "杨楠楠", "孙昕", "东木阳子",
"楚新元", "苏伟修", "吾丽娜", "徐小惠", "左喜梅"
)
# 对同学随机抽样
name_random = sample(name, size = 15, replace = FALSE)
#--------------------------------------------------------------------
# 对试题进行随机抽样
#--------------------------------------------------------------------
# 设置随机数种子
set.seed(20190507)
# 出现一次的 topic
topic1 = c("p104_3", "p127_2", "p127_3", "p145_3", "p183_1")
# 出现两次的 topic
topic2 = c("p104_1", "p127_1", "p145_2", "p183_2", "bully")
# topic 样本空间
topic = c(topic1, rep(topic2, 2))
# 对 topic 随机抽样
topic_random = sample(topic, size = 15, replace = FALSE)
#--------------------------------------------------------------------
# 合并两次结果
#--------------------------------------------------------------------
result = data.frame(name_random, topic_random)
colnames(result) = c("姓名", "考题")
#--------------------------------------------------------------------
# 显示结果
print(result)
#> 姓名 考题
#> 1 李梦阳 p127_1
#> 2 左喜梅 bully
#> 3 徐小惠 p183_2
#> 4 苏伟修 p127_1
#> 5 刘冀 p145_3
#> 6 刘琦平 p127_3
#> 7 乌云其其克 p183_1
#> 8 庞秀萍 p127_2
#> 9 克甝 p104_3
#> 10 楚新元 p104_1
#> 11 孙昕 p183_2
#> 12 吾丽娜 p145_2
#> 13 蔡青青 p104_1
#> 14 东木阳子 bully
#> 15 杨楠楠 p145_2
-
之前,如果您发现“甝”字的楷体显示不正常,那是因为您本地电脑或手机上没有安装楷体或者安装的是字库不全的楷体。本地缺字,因此网站会云端嵌入字体,之前云端楷体只有文鼎楷体简体(精简版的子集),该字体字库不全,缺“甝”字;2024 年 6 月 9 日,云端同时嵌入文鼎楷体简体和繁体后这个问题成功被解决了! ↩︎