2017-12-16 25 views
-1

私は1日の乱数を生成する方法を探しており、この乱数は1日中安定しています。翌日、コードは別の乱数などを生成します。毎日の乱数を生成する

私は正確に同じ年に同じ日に同じ乱数を割り当てる必要はありません。

実際のコード:

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

- >たびに、そのIコードを使用してください: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" 
+0

日のベクトルがありますか?日のデータフレーム?日時の値はありますか? – AntoniosK

+2

あなたはそれを削除するのではなく、変更する方が良いと思っています! :-)開始時にデータがどのように見えるかを(vector-dataset?)と最後にどのように見たいかを表示します。 – AntoniosK

+1

'set.seed()'を使用して、予測可能な点で乱数ジェネレータを開始します。 –

答えて

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

どんなにあなたが今日このコードを実行する回数を、あなたは常に同じ出力が得られないでしょう。明日は変わり、一日中安定していきます。

0

これは、日ごとに乱数を生成する必要があります。

library(tidyverse) 

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

解決策は上記のコメントの助けを借りて見つけました。

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

'sample'はあなたのベクトルから直接サンプルすることができるので、' MyRandomNumber'はまったく必要ではありません。 'sample(MyValues、1)'は動作するはずです。 – rosscova