楚新元 | All in R

Welcome to R Square

利用 R 实现考生和考题随机匹配

楚新元 / 2019-05-05


班里有 15 个人,10 个 topic,其中 5 个 topic 要求出现两次,这样正好 15 个人选择 15 个 topic,用 sample() 函数分别对同学和 topic 做不放回随机抽样,然后组合在一起即可,思路很简单,娱乐一下。注:这里设置了随机数种子,因为当天是 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