【问题标题】:Generate a random number for each day每天生成一个随机数
【发布时间】:2019-03-05 00:55:15
【问题描述】:

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

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

实际代码:

# 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"

【问题讨论】:

  • 你有天的向量吗?几天的数据框?你有日期时间值吗?
  • 您正在寻找更好的东西来更改它而不是删除它! :-) 向我们展示您的数据在开始时的样子(向量?数据集?)以及您希望它最终的样子。
  • 使用set.seed() 在可预测的点启动随机数生成器。
  • 每年同一天的随机数应该相同吗?即:每年 1 月 1 日使用相同的随机数,还是每次都使用新的随机数?

标签: r random


【解决方案1】:
# 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】:

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

    # 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])
    

    【讨论】:

    • sample 可以直接从您的向量中采样,因此您根本不需要MyRandomNumber:sample(MyValues,1) 应该可以工作。
    【解决方案3】:

    这应该会为每一天生成一个随机数。

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

    【讨论】:

      猜你喜欢
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 2023-01-03
      • 2018-04-21
      • 2014-08-01
      • 2011-09-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多