R随机数的总和?

时间:2017-12-08 04:25:30

标签: arrays r math

我正在尝试编写一个R函数,它将生成n(传递给函数)随机数并返回数字的总和并显示随机数字集

我是R的新手,假设这里会使用数组,但不确定。 此外,我的尝试只允许10个数字,但如果我尝试以10以外的任何数量执行此操作,则会给出错误的总和。

我不知道我做错了什么,但这是我到目前为止所做的。

random.sum <- function(n) {  
x[1:n] <- ceiling(10*runif(n)) 
cat("x:", x[1:n], "\n") 
return(sum(x)) 
}
x <- rep(100, 10)
show(random.sum(10))

2 个答案:

答案 0 :(得分:1)

你几乎是对的。

您无需将x指定给函数外部的任何内容,并且在函数内部不需要对x进行分组,您可以使用n进行分配随机数。然后它会工作

random.sum <- function(n) {
    x <- ceiling(10*runif(n)) 
    cat("x:", x, "\n")
    return(sum(x))
    }

random.sum(13)
x: 4 6 10 4 6 10 8 2 5 10 4 4 6 
[1] 79

解释

如果在函数外部指定x <- rep(100, 10),则创建矢量大小为10,每个元素的值为100.

由于“词法范围”,x功能可以使用random.sum,所以当你有这条线时

x[1:4] <- ceiling(10*runif(n))   ## where n = 4

您将x的前4个值指定为随机数,但其余值仍为100.因此,您的总和实际为(100 * 6) + 4 random numbers

如果您在原始函数中输入一些print语句

,就会发现这种情况
random.sum <- function(n) {
    print(x)
    x[1:n] <- ceiling(10*runif(n)) 
    print(x)
    cat("x:", x[1:n], "\n")
    print(x)
    return(sum(x))
} 

x <- rep(100, 10)
random.sum(4)

# [1] 100 100 100 100 100 100 100 100 100 100
# [1]   5   2   1   3 100 100 100 100 100 100
# x: 5 2 1 3 
# [1]   5   2   1   3 100 100 100 100 100 100
# [1] 611

答案 1 :(得分:1)

这样的事情怎么样:

random.sum <- function(n) {
  # Store n random integers between 0 and 100 in vector called random_nums
  random_nums <- floor(runif(n, min=0, max=100))

  # Show the random numbers
  print(random_nums)

  # Return the sum of the random numbers
  return(sum(random_nums))
}

print(paste("Sum:", random.sum(5), sep=" "))

示例输出

[1] 57  3 64 18 46
[1] "Sum: 188"