使用R中的样本函数尝试模拟时出现问题

时间:2018-11-28 22:35:47

标签: r statistics

很抱歉,如果我无法按照需要进行重现,但这是我的第一次尝试,因此在这里进行。我想弄清楚NBA彩票类型系统的数学赔率。系统的工作方式是为团队分配一定数量的乒乓球,并一次抽出一个乒乓球。如果选择了数字,则删除其余具有相同数字的乒乓球,然后画另一个球。我考虑过使用pbinom()来解决这个问题,但是后来意识到,根据已经绘制的球,赔率会发生变化。因此,我决定尝试仅模拟问题。为此,我想出了以下代码

sim_draft <- function(n){
    set.seed(3)
    # Initalize lottery
    draft_order <- c()
    n=1
    slot_1<-rep(1,6)
    slot_2 <- rep(2,5)
    slot_3 <- rep(3,4)
    slot_4 <- rep(4,3)
    slot_5 <- rep(5,2)
    slot_6 <- rep(6,1)
    lottery_bag <- c(slot_1,slot_2,slot_3,slot_4,slot_5,slot_6)
    while (n!=7){
        print("lottery bag")
        print(lottery_bag)
        pick1 <- sample(lottery_bag,1)
        print(pick1)
        draft_order <- append(draft_order,pick1)
        lottery_bag <- lottery_bag[!lottery_bag %in% pick1]
        n <- n+1
}

    return(draft_order)
}
sim_draft(1)

我用这个种子保存了它,因为出于某种原因,当我运行代码时,while循环中的最后一次运行只是重复了草稿订单列表上的第5个条目。在这种情况下,它将打印“ 1 5 3 2 4 4”。我添加了用于调试的打印语句,但无法弄清楚出了什么问题。彩票袋正确打印后只剩下“ 6”,但示例函数返回“ 4”

编辑:

if (length(lottery_bag)==1) 
        draft_order <- append(draft_order,6)
    else
        draft_order <- append(draft_order,pick1)

进一步,正如MrFLick所指出的那样,这就是样本的行为方式,我什至不需要该函数,因为给定一个概率列表,样本就可以为我完成所有工作

sample(1:6,6,replace = FALSE, prob=c(6/20,5/20,4/20,3/20,2/20,1/20))

0 个答案:

没有答案