首页 > 解决方案 > 随机分布计算

问题描述

如果我指定一个数字,有没有办法将该数字的随机部分作为总数分配给几个组?

例如总计 1。

第 1 组 - 0.1 第 2 组 - 0.3 第 3 组 - 0.4 第 4 组 - 0.2

标签: pythonjava

解决方案


Python

from random import random

num_groups = 5  # Number of groups
total = 5  # The given number

base = [0.] + sorted(random() for _ in range(num_groups - 1)) + [1.]
portions = [(right - left) * total for left, right in zip(base[:-1], base[1:])]

结果 ( print(portions)):长度列表num_groups(组数),其中包含分布total(给定数量):

[2.5749833618941995, 0.010389749273946869, 0.3718137712569358, 0.3725336641218424, 1.6702794534530752]

推荐阅读