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