gpt4 book ai didi

r - R 的乐透功能

转载 作者:行者123 更新时间:2023-12-01 09:25:10 24 4
gpt4 key购买 nike

我刚刚生成了 10 个从 1 到 39 的随机乐透号码,现在我想检查这些号码是否与我的中奖彩票匹配,例如 w<-c(2,8,19,23,25,32,37)因此,如果我有 3 场比赛的特别组合,奖金为 10 美元,4 50 美元,5 100 美元,6 2000 美元,所有 7 100000 美元。

    set.seed(99)
y <- replicate(10,sample(1:39,7,replace=FALSE))
dimnames(y) <- list(rownames(y,do.NULL=FALSE,prefix=""),
colnames(y,do.NULL=FALSE,prefix="Combination"))
m <- t(y)
(m2 <- t(apply(m,1,sort)))

[,1] [,2] [,3] [,4] [,5] [,6] [,7]
Combination1 5 19 23 26 33 36 39
Combination2 7 12 14 18 20 22 37
Combination3 4 7 8 14 25 27 36
Combination4 1 4 13 22 27 28 32
Combination5 1 2 8 12 13 19 37
Combination6 16 18 22 27 30 31 35
Combination7 13 15 18 20 31 34 36
Combination8 5 10 27 28 29 31 35
Combination9 4 10 14 21 23 33 35
Combination10 1 17 20 28 29 32 33

最佳答案

收到的答案都是正确的。我只想指出 %in%is.element 基本上是相同的功能。但是,不需要任何apply。请记住,apply 只是隐藏了一个 for 循环,并且与矢量化的内部 R 函数相比非常慢。我只是建议:

  rowSums(matrix(m %in% w, ncol=ncol(m)))

这可以更快:

  m<-t(replicate(100000,sample(39,7)))
system.time(res<-apply(m,1,function(x) sum(x%in%w)))
# user system elapsed
# 0.584 0.000 0.587
system.time(res2<-rowSums(matrix(m %in% w, ncol=ncol(m))))
# user system elapsed
# 0.036 0.004 0.040
all.equal(res,res2)
#[1] TRUE

关于r - R 的乐透功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26236849/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com