#r
Вопрос:
Мне нужно продолжать печатать (рисовать) буквы до тех пор, пока следующее письмо не выйдет из строя по сравнению с предыдущим.
Примером может быть C-D-E-A, количество розыгрышей будет равно 4, так как A не после E. Я пытаюсь использовать цикл while для этого.
draw <- function() {
drawletters <- sample(LETTERS)
drawnum <- 0
while (drawletters > drawletters) {
firstdraw <- drawletters
drawletters <- sample(LETTERS)
drawnum <- drawnum 1
}
print(drawletters)
}
Я понимаю, что мое условное утверждение неверно в моем цикле, но я не знаю, как лучше всего это сделать.
Ответ №1:
Вот одно из возможных решений:
# Create an empty (NULL) vector to store the results of each run
results <- c()
# Create the function
draw <- function(){
# Start with draw_num = 0
draw_num <- 0
# Draw a letter
firstdraw <- sample(LETTERS, 1)
# Add 1 to draw_num
draw_num <- draw_num 1
# Draw another letter
nextdraw <- sample(LETTERS, 1)
# Add another 1 to draw_num
draw_num <- draw_num 1
# Print the letters (you can omit this if you don't need it)
print(firstdraw)
print(nextdraw)
# Then use a while loop to print the letters and add 1 to draw_num
# until the next letter comes before the previous
while(nextdraw > firstdraw) {
firstdraw <- nextdraw
nextdraw <- sample(LETTERS, size = 1)
draw_num <- draw_num 1
print(nextdraw)
}
# Then print draw_num
print(draw_num)
# And append draw_num to the results vector
results <<- c(results, draw_num)
}
# Run the function a bunch of times (e.g. run "draw()" 10X)
draw()
# Then you can see the average number of letters drawn across all runs
mean(results)
#>[1] 2.7
Комментарии:
1. Я не уверен, что это именно то, что я ищу, хотя это отчасти помогает. Основная цель состоит в том, чтобы придерживаться одного образца без каких-либо замен. Мне сказали, что ответ был примерно около 2,72 ничьих. Я думаю, главное-как я могу сравнить образец с самим собой . Я предполагаю, что мы используем скобки
[]
, но я не знаю правильного способа сделать это