2024-09-30 00:32:27 发布
网友
我有一个数据框,我想在其中创建一个新列中的随机数。随机数必须满足两个约束条件:
在下面的示例中,由于总和为300且随机数不超过约束列,因此满足了约束
示例:
似乎已经演示了random numbers totaling a sum,但我没有看到第二个约束的示例
为清晰起见进行编辑:新列必须是整数。最小下限值为0
您可以使用multinomial分布来构建近似答案:
def sample(total, constraints): import numpy as np rng = np.random.default_rng() samples = rng.multinomial(total, constraints / constraints.sum(), size=100) return next(val for val in samples if np.all(val < constraints)) df["RANDOM"] = sample(300, df["CONSTRAINT"].values) print(df)
输出
GEOID CONSTRAINT RANDOM 0 10010000001 100 81 1 10010000002 50 42 2 10010000003 75 57 3 10010000004 75 53 4 10010000005 100 67
感谢@Michael Szczesny测试解决方案
解决这个问题的关键在于(引用numpy docs):
Its values, X_i = [X_0, X_1, ..., X_p], represent the number of times the outcome was i.
请参阅本blog post中的更多详细信息
您可以使用multinomial分布来构建近似答案:
输出
感谢@Michael Szczesny测试解决方案
解决这个问题的关键在于(引用numpy docs):
请参阅本blog post中的更多详细信息
相关问题 更多 >
编程相关推荐