【问题标题】:Breaking while loop, reaching a certain randomly generated value in R打破while循环,在R中达到某个随机生成的值
【发布时间】:2020-06-24 02:57:03
【问题描述】:

在 R 中编写一个 while 循环。

我有一个初始值,我需要模拟一个样本(但大小必须是无限的,而不是 100)。

当样本达到必要值时,我想打破循环并打印一条消息。

我的逻辑如下:

my_start <- 1000 # inital value
random <- sample(my_start, size = 100, replace = FALSE, prob = NULL) 
# sample simulation, but size must be not 100, but unlimited
while (result > 2000) {
result <- my_start + random # trying here to add a sample to initial value
print('Start reaches', result)
}

另外我希望样本的分布不会超过 100。

感谢任何提示!

更新:在另一个用户的帮助下几乎达到了目标,只是希望值的波动不会超过某个值(100),而不是纯粹随机的。例如,它会在 900 和 1000 之间波动,当它达到 1050 时,它就会破裂。

my_start <- 1000 # inital value
result <- my_start
n <- 2000 # generate random number from 1 to this value

while (result < 2000) {
random <- sample(n, 1)
result <- random
cat('\nValue reaches', result)
}

【问题讨论】:

  • 你从什么采样? sample(my_start, size = 100, replace = FALSE, prob = NULL) 表示从 1 到 my_start 的任意随机数,其中 size 为 100。这是您想要的吗?
  • @RonakShah, my_start = 1000,我需要生成随机数,直到它等于 2000。另外我希望样本的分布不会超过 100。然后我需要打破循环.谢谢!

标签: r loops while-loop


【解决方案1】:

可能,这就是你想要的:

my_start <- 1000 # inital value
result <- my_start
n <- 100 #generate random number from -n to n

set.seed(123)
while (result < 2000) {
  random <- sample(-n:n, 1)
  result <- result + random
  cat('\nValue reaches', result)
}

#Value reaches 1058
#Value reaches 1136
#Value reaches 1049
#Value reaches 1143
#Value reaches 1212
#...
#...
#Value reaches 966
#Value reaches 906
#Value reaches 980
#Value reaches 969
#Value reaches 928
#Value reaches 843
#Value reaches 858
#...
#...
#Value reaches 1952
#Value reaches 1973
#Value reaches 2015

【讨论】:

  • 谢谢!几乎!我还希望随机生成的值可以低于 1000,并且我希望有一个无限循环(不是大小 = 100),直到达到 2000。
  • @Oleksiy 它已经是一个无限循环,并且不限于任何特定大小。我添加了对增量/减量值的调整。
  • 谢谢!差不多了!如何将随机性限制在一定的波动范围内?请查看更新后的问题。
  • 我不清楚您的问题的新编辑意味着什么。但是,请不要在收到答复后更改您的问题。在原始问题本身中包含所有详细信息和预期行为。
  • 好的,谢谢,我更新了,但没有改变任何东西!非常感谢!
猜你喜欢
  • 1970-01-01
  • 2018-06-29
  • 2020-10-21
  • 1970-01-01
  • 2018-05-05
  • 2015-04-15
  • 1970-01-01
  • 2023-02-06
  • 1970-01-01
相关资源
最近更新 更多