在向量中找到第一个增加的值

Find first increasing value in vector

我通过

从均匀分布中抽取随机样本
u <- runif (1000,0,1)

现在我要计算这个随机变量的值

N = min_n {n : u_n > u_{n-1}}

编辑 假设我抽取了一个大小为 10 的随机样本。

所以,我有 u= (u_1,u_2,u_3,...,u_10)。现在我想找到 u_n > u_{n-1}

的最小值 n

如果您取差值(使用 diff),那么您正在寻找差值大于 0 的地方。我们搜索第一次发生的情况

u <- c(.5, .4, .3, .6)
min(which(diff(u) > 0))

这给了我们 3,它接近我们想要的但不完全是。因为这将 return 1 如果第一个差异大于 0 我们真正想要做的是将结果加 1

min(which(diff(u) > 0))) + 1

这应该给我们想要的。如果您的序列严格下降,这将发出警告,因为它找不到满足条件的值。我们可以在一些测试中编写代码,并在这种情况下决定适当的输出,但我将把它留作 reader.

的练习。