第一次在Stackoverflow.我希望有人可以帮助我搜索一个算法.
我需要在给定的范围内生成N个随机数,总和到给定的数值!
例如:Generatare 3个数字,总和为11.
范围:
> 1到3之间的值.
> 5到8之间的值.
> 3到7之间的值.
这个例子的生成数字可以是:2,5,4.
我已经搜索了很多,找不到我需要的解决方案.
或者通过产生N个随机值,将它们相加,然后将常数和除以随机和,然后将每个随机数乘以该商G0001.
主要问题,为什么我不能采用这些解决方案是我的每个随机值都有不同的范围,我需要这些值与范围均匀分布(例如,在最小/最大值时不发生频率发生,如果我切断值其小于/大于最小/最大).
我也想到了一个soultion,取一个随机数(在该例子中,值为1,2或3),生成范围内的值(min / max或min之间),剩余的总和取决于哪个更小),减去我给定总和的数量,并保持一切,直到一切都分布.但是这将是可怕的无效.我真的可以使用算法的运行时间固定的方式.
我试图让它运行在Java.但是,该信息不是importend,除非有人已经有一个解决方案准备好了.所有我需要的是一个算法的描述或想法.