如何在R语言中基于指定规则生成300条随机数据
生成符合规则的300条随机数据
我们需要生成300条满足以下Class与Value区间对应关系的随机数据,且各类别的数据数量采用均等与不均等混合的方式:
| Class | Value区间 |
|---|---|
| 0 | 1-8 |
| 1 | 9-11 |
| 2 | 12-14 |
| 3 | 15-16 |
| 4 | 17-20 |
实现代码(Python)
import random import csv # 定义每个Class对应的Value区间和分配数量(混合均等与不均等,总和300) class_config = [ {"class": 0, "min_val": 1, "max_val": 8, "count": 70}, {"class": 1, "min_val": 9, "max_val": 11, "count": 60}, {"class": 2, "min_val": 12, "max_val": 14, "count": 50}, {"class": 3, "min_val": 15, "max_val": 16, "count": 40}, {"class": 4, "min_val": 17, "max_val": 20, "count": 80} ] # 生成随机数据 random_data = [] for config in class_config: for _ in range(config["count"]): value = random.randint(config["min_val"], config["max_val"]) random_data.append({"Class": config["class"], "Value": value}) # 打印前10条示例数据 print("前10条数据示例:") for row in random_data[:10]: print(f" {row['Class']} {row['Value']}") # 可选:将数据保存为CSV文件 with open("random_data.csv", "w", newline="") as f: writer = csv.DictWriter(f, fieldnames=["Class", "Value"]) writer.writeheader() writer.writerows(random_data)
代码说明
- 数量分配:通过
class_config里的count字段自定义每个类别的数据量,比如Class0分配70条、Class4分配80条,其他类别数量不同,实现了均等与不均等的混合需求。若要调整数量,直接修改count值即可,确保总和为300。 - 随机值生成:使用
random.randint()严格按照每个Class对应的区间生成整数随机值,完全符合规则要求。 - 输出:既打印了前10条数据示例,也支持将所有数据保存为CSV文件,方便后续查看或处理。
内容的提问来源于stack exchange,提问作者user330
相关产品推荐
相关产品推荐

