如何用c语言产生一组加起来和固定的随机数?

比如说我要产生5个随机数,这5个数虽然是随机的,但他们的和确实固定的(比如说这5个数之和为100)。
有一种比较容易想到的方法,产生第一个随机数时先从0到100里面选一个随机数,(假设选的第一个随机数为m)然后产生第二个随机数时从0到100-m中选一个随机数,以此类推。
但是这个方法有一个明显的缺点就是产生的随机数分布不均匀。
能不能有一种方法能产生分布比较均匀,又能满足预设条件的随机数的方法?

有啊,例如产生10个数,和为100,想均匀的话产生随机数为100/10的上下浮动不就好了啊。例如产生8-12之间的随机数rand()%5+8
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-05-24
那就第二次也从0~100取,然后这个数字大于 100-m就丢弃重新取,小于就留校,接着第三次,第n-1次,最后一次就别随机了 用和-前面的所有
第2个回答  2013-05-24
先产生四个随机数,最后一个不用随机,拿100减去前四个数的和。
第3个回答  2013-05-24
设数的个数为n,和为S.可限定每个随机数的取值范围为S/(n-1)~S/n.
相似回答