随机数的总和刚好等于你设定的值?在 makeGDSum.mmakeGDSum2.m 这两个 MATLAB 函数里就能轻松搞定。写模拟、做测试、跑优化时,这类函数用得可太频了。前者比较直接,生成 N-1 个随机数,一个用总和减前面的和就行。简单粗暴但管用。后者就稍微聪明点,会加些条件,比如随机数分布要均匀、落在某个范围内什么的。

用法也挺灵活,想生成 [0,1) 的随机数就用 rand,要整数就 randi,正态分布用 randnnormrnd。记得设置种子 rng,不然结果每次都不一样;还有,NS 要合理,比如 N 得大于 0,S 太小也不行。

如果你在做一些带约束的数值实验,或者模型初始化时要控制总量,那这两个函数就还挺顺手的。想了解更复杂的概率分布生成,可以看看下面这几个链接,挺有。