本文介绍了获取总和为 M 的 N 个随机数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想得到 N 个随机数,其总和是一个值.
I want to get N random numbers whose sum is a value.
例如,假设我想要 5 个总和为 1 的随机数.
For example, let's suppose I want 5 random numbers that sum to 1.
那么,一个有效的可能性是:
Then, a valid possibility is:
0.2 0.2 0.2 0.2 0.2
另一种可能是:
0.8 0.1 0.03 0.03 0.04
等等.我需要这个来为模糊 C 均值创建一个矩阵.
And so on. I need this for the creation of a matrix of belongings for Fuzzy C-means.
推荐答案
简短回答:
只需生成 N 个随机数,计算它们的总和,然后将每个数除以求和并乘以 M.
更长的答案:
上述解决方案不能产生均匀分布,这可能是一个问题,具体取决于这些随机数的用途.Matti Virkkunen 提出的另一种方法:
The above solution does not yield a uniform distribution which might be an issue depending on what these random numbers are used for.Another method proposed by Matti Virkkunen:
生成0到1之间的N-1个随机数,将数字0和1相加自己到列表中,对它们进行排序,并采取差异相邻的数字.
这会产生均匀分布,如here一个>
这篇关于获取总和为 M 的 N 个随机数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!