You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言:申请者与评审的无重复随机分配方案及扩展场景求助

R语言实现评审与申请者的随机分配方案

需求说明

  • 评审列表:reviewer1、reviewer2、reviewer3
  • 核心规则:每个申请者分配2名不同评审,禁止同一评审重复分配给同一申请者
  • 两种场景:
    1. 6名申请者:每位评审恰好完成4次评审
    2. 7名申请者:每位评审至少完成4次,其中2位完成5次

场景1:6名申请者(整除情况)

初始数据

reviewers <- c("reviewer1", "reviewer2", "reviewer3")
applications <- data.frame(
  applicant = 1:6,
  reviewer1_assigned = NA,
  reviewer2_assigned = NA
)

分配实现代码

# 初始化评审次数跟踪
reviewer_counts <- setNames(rep(0, length(reviewers)), reviewers)
target_count <- 4  # 每位评审需完成的次数

for (i in 1:nrow(applications)) {
  # 筛选当前可用的评审:未达目标次数的评审
  available_reviewers <- names(reviewer_counts[reviewer_counts < target_count])
  
  # 随机抽取2名不同的评审
  selected <- sample(available_reviewers, size = 2, replace = FALSE)
  
  # 更新数据框和次数跟踪
  applications$reviewer1_assigned[i] <- selected[1]
  applications$reviewer2_assigned[i] <- selected[2]
  reviewer_counts[selected] <- reviewer_counts[selected] + 1
}

# 查看结果
print(applications)

逻辑说明

  • 用reviewer_counts跟踪每个评审的已分配次数,确保不超过目标值4
  • 每次为申请者随机抽取2名未达次数上限的不同评审
  • 总评审次数为6*2=12,3名评审各4次,刚好匹配需求

场景2:7名申请者(非整除情况)

初始数据

只需修改applications的申请者数量:

applications <- data.frame(
  applicant = 1:7,
  reviewer1_assigned = NA,
  reviewer2_assigned = NA
)

分配实现代码

# 初始化评审次数跟踪,设置不同的目标次数(2个5次,1个4次)
reviewer_counts <- setNames(rep(0, length(reviewers)), reviewers)
# 随机选2名评审设为5次目标,剩下1名4次
target_counts <- sample(c(5,5,4), size = 3, replace = FALSE)
names(target_counts) <- reviewers

for (i in 1:nrow(applications)) {
  # 筛选可用评审:未达自身目标次数的评审
  available_reviewers <- names(reviewer_counts[reviewer_counts < target_counts])
  
  # 随机抽取2名不同的评审
  selected <- sample(available_reviewers, size = 2, replace = FALSE)
  
  # 更新数据框和次数跟踪
  applications$reviewer1_assigned[i] <- selected[1]
  applications$reviewer2_assigned[i] <- selected[2]
  reviewer_counts[selected] <- reviewer_counts[selected] + 1
}

# 查看结果和评审次数统计
print(applications)
print("评审最终次数:")
print(reviewer_counts)

逻辑说明

  • 总评审次数为7*2=14,3名评审分配为5+5+4=14,刚好匹配
  • 随机选择2名评审承担5次评审任务,确保分配公平性
  • 同样通过次数跟踪确保每个评审不超过自身目标次数,同时保证申请者的2名评审不同

内容的提问来源于stack exchange,提问作者PCK1992

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 10:00:23