平方取中法产生随机数R语言
时间: 2023-09-18 09:09:12 浏览: 154
产生随机数
在R语言中,可以使用平方取中法(Square-Root Method)来生成随机数。该方法基于对一个数的平方取中间几位数来产生随机数。下面是一个简单的实现示例:
```R
# 设置种子,用于产生确定性随机序列
set.seed(123)
# 定义随机数生成函数
generate_random <- function(n) {
x <- 12345 # 设置初始值
result <- numeric(n) # 创建一个长度为n的空向量
for (i in 1:n) {
x <- x^2 # 对初始值进行平方运算
x_str <- as.character(x) # 将结果转换为字符型
# 取中间几位数作为随机数
middle <- substr(x_str, start = floor((nchar(x_str) - 4) / 2) + 1,
stop = floor((nchar(x_str) + 4) / 2))
# 将字符串转换为数值型,并归一化到[0,1]之间
result[i] <- as.numeric(middle) / 10000
}
return(result)
}
# 生成10个随机数
random_nums <- generate_random(10)
random_nums
```
在上面的代码中,我们使用了种子`set.seed(123)`来设置随机数的起始值,以确保每次运行代码时都能得到相同的随机数序列。函数`generate_random`用于生成指定数量的随机数,返回一个包含随机数的向量。运行示例代码后,会输出10个随机数。你可以根据需要修改参数`n`来生成不同数量的随机数。
阅读全文