随机生成5组数据,每一组数据各8个,每一个数据第一个比第二大10~15%,每一列数据之和是1. 数据介于0~1之间
时间: 2024-09-28 17:07:13 浏览: 36
要随机生成满足条件的数据,我们可以使用Python的numpy库。首先,我们需要创建一个5行8列的二维数组,其中每一行的第一个元素比第二个元素大10%到15%,并且所有列的数据之和都是1,范围限制在0到1之间。以下是步骤和代码实现:
```python
import numpy as np
# 设置随机种子以便复现结果
np.random.seed(0)
# 定义列和以及列数据的范围
col_sum = 1.0
data_range = (0, 1)
# 生成第一列数据,设为0.6(接近1的一半),保证后续列总和接近1
first_column = np.random.uniform(low=data_range[0], high=data_range[1] - ((1-data_range[1]) / 7), size=8)
remaining_columns = 1 - first_column.sum()
# 遍历剩余的7列,每次减去上一列的10%到15%(均匀分布),保证差额不超过剩余总和
other_columns = []
for _ in range(7):
random_diff = np.random.uniform(low=0.1, high=0.15) * remaining_columns
current_col = np.random.uniform(low=data_range[0], high=data_range[1] - random_diff, size=1)
remaining_columns -= random_diff
other_columns.append(current_col)
# 将所有列组合在一起
data_matrix = np.column_stack((first_column, *other_columns))
print(data_matrix)
```
运行这段代码会得到一组满足条件的随机数据。由于随机性,每次运行的结果都会有所不同,但如果需要固定的随机数序列,可以保持`np.random.seed()`设置不变。
阅读全文