在给定范围内生成 N 个随机数,这些随机数的总和为给定的总和
第一次来Stackoverflow。我希望有人能帮助我搜索算法。
我需要在给定的范围内生成N个随机数,这些随机数的总和等于给定的总和!
例如:生成 3 个总和为 11 的数字。
范围:
- 值介于 1 和 3 之间。
- 值介于 5 和 8 之间。
- 值介于 3 和 7 之间。
此考试的生成数字可以是:2、5、4。
我已经搜索了很多,但找不到我需要的解决方案。
可以像这样生成像常量和的N个数字解调模:生成总和为常数的随机数,但我无法用范围完成。
或者通过生成N个随机值,将它们求和,然后将常量和除以随机和,然后将每个随机数与该商相乘,如这里所建议的那样。
主要问题,为什么我不能采用这些解决方案是我的每个随机值都有不同的范围,我需要这些值与范围均匀分布(例如,在最小值/最大值处没有频率发生,如果我切断小于/大于最小/最大值的值,就会发生这种情况)。
我还想到了一个 soultion,取一个随机数(在该示例中,值为 1,2 或 3),在范围内生成值(介于最小值/最大值或最小值之间,其余部分取决于哪个值更小),减去我给定的总和中的该数字,并保持该值,直到所有内容都分布完毕。但那将是可怕的低效率。我真的可以使用一种算法运行时固定的方法。
我试图让它在Java中运行。但是该信息不是那个导入端,除非有人已经准备好了解决方案。我需要的只是一个算法的描述或想法。