生成R中3到7位数字的随机数

时间:2018-10-23 11:28:28

标签: r random sample

如何生成具有不同长度的随机数,例如3到7位数字之间的概率相等。

最后,我希望代码提供3到7位数字(均等概率),该数字由0到9之间的随机数组成。

我想出了这个解决方案,但由于必须生成数据帧,因此觉得它过于复杂。

class Dog:Animal{
   constructor(name:String):super(name)
   internal constructor(message:InputStream):super(message)

}

有没有更优雅的解决方案?

2 个答案:

答案 0 :(得分:3)

根据您提供的信息,我想出了另一个可能更接近您想要的解决方案。最后,它包括以下步骤:

  • 从[3,7]中随机选择一个数字len,以确定输出的长度
  • 从[0,9]中随机选择len个数字
  • 连接这些数字

执行此操作的代码

(len <- runif(1, 3, 7) %/% 1)
(s <- runif(len, 0, 9) %/% 1)
cat(s, sep = "")

我以前提供了这个答案;不过,它不符合要求,因为OP提供了更多详细信息后就清楚了。

难道不是要产生一个介于100和9999999之间的随机数吗? 如果是这样,这是您想要的吗?

runif(5, 100, 9999999) %/% 1

您可能还可以使用四舍五入,但始终必须四舍五入。

输出:

[1] 4531543 9411580 2195906 3510185 1129009

答案 1 :(得分:2)

您可以使用向量化方法,并直接在指数的允许范围内采样:

pick.nums <- function(n){floor(10^(sample(3:7,n,replace = TRUE))*runif(n))}

例如,

> set.seed(123)
> pick.nums(5)
[1]     455  528105   89241 5514350 4566147