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

每天生成一个随机数

  •  0
  • Kumpelka  · 技术社区  · 7 年前

    我正在寻找一种方法来为一天生成一个随机数,并且这个随机数在一整天都保持稳定。第二天,代码将生成另一个随机数,依此类推。

    我精确地说,我不需要为每年的同一天分配相同的随机数。

    实际代码:

    # Data
    MyMax <- 45
    MyValues <- paste0("The video of the day is : video_", seq(1:MyMax))
    
    # Random generator
    MyRandomNumber <- sample(1:MyMax, 1)
    
    # Output
    print(MyValues[MyRandomNumber])
    

    预期输出:

    -&燃气轮机;每次我使用代码时,2017年12月16日:

    [1] "The video of the day is : video_35"
    [1] "The video of the day is : video_35"
    

    -&燃气轮机;每次我使用代码时,2017年12月17日:

    [1] "The video of the day is : video_48"
    [1] "The video of the day is : video_48"
    

    -&燃气轮机;每次我使用代码时,2018年12月16日:

    [1] "The video of the day is : video_12"
    [1] "The video of the day is : video_12"
    
    3 回复  |  直到 6 年前
        1
  •  3
  •   AntoniosK    7 年前
    # specify maximun random number (minimum is 1)
    MyMax <- 100
    
    # this will make sure randomisation remains stable at each day
    set.seed(as.numeric(Sys.Date()))
    
    # show the randomised value
    paste0("The video of the day is : video_", sample(1:MyMax, 1))
    
    # [1] "The video of the day is : video_79"
    

    无论您今天运行此代码多少次,您都会得到相同的输出。明天,它将发生变化,并将全天保持稳定,等等。

        2
  •  2
  •   Kumpelka    7 年前

    我在上述评论的帮助下找到的解决方案。

    # Data
    MyMax <- 45
    MyValues <- paste0("The video of the day is : video_", seq(1:MyMax))
    
    # Random generator
    set.seed(as.numeric(Sys.Date()))
    MyRandomNumber <- sample(1:MyMax, 1)
    
    # Output
    print(MyValues[MyRandomNumber])
    
        3
  •  0
  •   jimbo    7 年前

    这将为每天生成一个随机数。

    library(tidyverse)
    
    dayYear <- as.Date(Sys.Date(),format='%d/%m/%Y') %>% lubridate::yday() %>% integer()
    set.seed(dayYear)
    randNum <- rnorm(1)