我正在尝试编写一个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))
答案 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"