代码之家  ›  专栏  ›  技术社区  ›  user3115933

如何使我现有的R码输出奇偶数的特定计数?

  •  1
  • user3115933  · 技术社区  · 7 年前

    R . 它基本上输出6 random 数字取决于我选择的每个数字的频率 list

    foo <- list(
      c(1,2,3,4,5,6,7,8,9,10), 
      c(11,12,13,14,15,16,17,18,19,20),
      c(21,22,23,24,25,26,27,28,29,30), 
      c(31,32,33,34,35,36,37,38,39,40) 
    )
    
    names(foo) <- c(3, 2, 1, 0)
    
    list2<- unlist(sapply(seq_along(foo), function(x) sample(foo[[x]], names(foo[x]))))
    
    sort(list2)
    

    因此,上述代码将输出6 随机的

    我想也能够添加到这些代码的选择,选择的数量 odd 数字和 even 最终输出中的数字。

    即使 古怪的 数字。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Sal-laS    7 年前

    您可以有许多选择,但最简单的是使用无限循环。但是,在循环之前,还需要两个函数来计算几率:

    is.odd <- function(x) x %% 2 != 0
    
    countOdds<-function(dt){ sum(sapply(dt, is.odd)) }
    

    然后循环是:

    while(T){
      list2<- unlist(sapply(seq_along(foo), function(x) sample(foo[[x]], names(foo[x]))))
      if(countOdds(list2)==2)
        break
    }
    

    一般来说 连续不断地


    整个代码是:

    foo <- list(
      c(1,2,3,4,5,6,7,8,9,10), 
      c(11,12,13,14,15,16,17,18,19,20),
      c(21,22,23,24,25,26,27,28,29,30), 
      c(31,32,33,34,35,36,37,38,39,40) 
    )
    
    names(foo) <- c(3, 2, 1, 0)
    
    
    is.odd <- function(x) x %% 2 != 0
    
    countOdds<-function(dt){ sum(sapply(dt, is.odd)) }
    
    
    
    while(T){
      list2<- unlist(sapply(seq_along(foo), function(x) sample(foo[[x]], names(foo[x]))))
      if(countOdds(list2)==2)
        break
    }
    
    sort(list2)
    

    结果是:

    4 6 7 11 12 30

    推荐文章