【发布时间】:2016-01-18 15:46:05
【问题描述】:
我正在尝试使用以下代码生成一个包含 8 个数字的列表:
import numpy as np
import pandas as pd
n2 = np.random.uniform(0.1, 1.5)
c2 = np.random.uniform(4,14)
c3 = np.random.uniform(0.1,2.9)
ic4 = np.random.uniform(0.01,1)
nc4 = np.random.uniform(0.01,1)
ic5 = np.random.uniform(0,0.2)
nc5 = np.random.uniform(0,0.01)
comp_list = []
for i in range(1):
if n2/c2 <= 0.11:
comp_list.append(c2)
comp_list.append(n2)
if c3/c2 <= 0.26:
comp_list.append(c3)
if ic4/c3 <= 0.27:
comp_list.append(ic4)
if nc4/ic4 <= 1:
comp_list.append(nc4)
if ic5/nc4 <= 0.06:
comp_list.append(ic5)
if nc5/ic5 <= 0.25:
comp_list.append(nc5)
sum = n2+c2+c3+ic4+nc4+ic5+nc5
c1 = 100-sum
comp_list.append(c1)
df = pd.Series(comp_list)
print df
但是,当我运行代码时,输出的数字数量并不一致,范围可以从 3 到 5。例如,1 运行会给我:
0 1.560
1 0.251
2 0.008
3 86.665
第二次运行会给我:
0 12.929
1 1.015
2 2.126
3 0.093
4 0.0025
5 83.376
我不知道为什么输出不一致。
也许我需要遍历随机分布,直到满足所有 if 语句?还是我遗漏了一些明显的东西?
【问题讨论】:
-
因为你用
np.random.uniform()生成随机数? -
我需要随机生成的数字来满足约束(即
-
你没有解释你想要做什么或你期望什么。
-
我想要一组随机生成的数字来满足我设置的约束。例如,我从 n2 开始并检查 n2/c2 是否
-
那么为什么你认为你的输出是错误的?你期望得到什么?
标签: python numpy pandas random