如何在R中实现循环:生成均值100、sd=5的随机值,<80时终止并维护向量A
解决R语言循环生成随机数并终止的问题
首先得纠正你代码里的一个小错误:rnorm <- set.seed(999)这种写法是不对的,set.seed()是用来设置随机数种子(保证结果可复现)的函数,不需要赋值给任何变量,单独执行就好。
接下来直接给你实现需求的完整代码,再一步步解释:
# 设置随机种子,确保每次运行得到的随机数一致 set.seed(999) # 初始化空向量A,用来存储符合条件的随机值 A <- NULL # 使用repeat循环(适合这种"直到满足条件才停止"的场景) repeat { # 生成1个均值为100、标准差为5的正态分布随机数 rand_num <- rnorm(n = 1, mean = 100, sd = 5) # 判断:如果生成的数小于80,立刻终止循环 if (rand_num < 80) { break } # 否则把这个数追加到向量A里 A <- c(A, rand_num) } # 循环结束后打印向量A A
补充说明:
- 为什么用
repeat循环?因为我们不确定循环会执行多少次,只有当生成的随机数小于80时才停止,repeat天生就是为这种"无限循环直到触发退出条件"的场景设计的。 - 你也可以用
while循环实现,写法稍微不同,但逻辑一样:
set.seed(999) A <- NULL # 先生成第一个随机数 rand_num <- rnorm(1, 100, 5) # 当随机数>=80时继续循环 while (rand_num >= 80) { A <- c(A, rand_num) # 生成下一个随机数 rand_num <- rnorm(1, 100, 5) } A
两种写法都能实现你的需求,选你觉得更直观的就行~
内容的提问来源于stack exchange,提问作者user13724494
相关产品推荐
相关产品推荐

