首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

带约束的随机数有关问题

2012-06-20 
带约束的随机数问题谢谢你看此贴.问题:生成n个[-0.5,1.5]之间的随机数使得其和为1.请问怎样做才可以尽可

带约束的随机数问题
谢谢你看此贴.

问题:生成n个[-0.5,1.5]之间的随机数使得其和为1.

请问怎样做才可以"尽可能的随机"?

[解决办法]
这里最关键的就是确定每次生成随机数的数值范围,[-0.5,1.5]是最直接的要求,还有一个隐含要求:使得其和为1。
所以,我们主要计算隐含要求限定的数值范围,然后和[-0.5,1.5]取交集,就能获得实际的随机数值范围了。

第一个数,隐含要求规定其最小值为(2.5-1.5*n),这样只有后面(n-1)个数全是1.5,才能保证和为1;同理求出其最大值为(0.5+0.5*n),只有后面全是-0.5,才能保证和为1;将这个范围与[-0.5,1.5]取交集后,得到第一个数的范围,然后在范围内取随机数;

第二个及以后的数,分析方法同上,只不过第一个数已经确定,可以直接带入运算。

实现成程序也是很简单的事情。

热点排行