搜一下,似乎没有找到好的办法,现求助一下。谢谢先~~~
问题描述如下:
1.随机输入一个N,也就是要产生N个随机数
2.这N个随机数满足N1+N2+……+Nn=1 (可以做加权用)
3.这N个随机数随机不要均匀的,0<Ni<1随机数可以产生出来,如何确保N1+N2+……+Nn=1还没有想好,有高手指教下。谢谢先,预祝国庆节快乐,祖国60华诞生日快乐。
问题描述如下:
1.随机输入一个N,也就是要产生N个随机数
2.这N个随机数满足N1+N2+……+Nn=1 (可以做加权用)
3.这N个随机数随机不要均匀的,0<Ni<1随机数可以产生出来,如何确保N1+N2+……+Nn=1还没有想好,有高手指教下。谢谢先,预祝国庆节快乐,祖国60华诞生日快乐。
解决方案 »
- java 奇偶校验
- 一个关于JTextPane的setText函数的问题
- jdk安装后文件里面的sample文件夹下的 jnlp和nio 是什么例子、怎么使用?
- 急,如何log4j将INFO信息输出到AWT界面中的一个TEXTARWA中
- 谁来帮我解释一下这道题
- 请问为什么我的myeclipse上不能创建Spring框架啊?谢谢!
- 小问题,请高手指教
- 安卓快播QVOD协议讨论,再开一帖讨论.来者有分
- java编辑器解决方案,大家来出谋划策啊!!
- 谁能具体讲一下jre,jdk,j2sdk的区别?
- 那位兄弟对Jdom操作XML比较熟悉,帮我解答一下。
- 急求!!ERROR 1064 (42000): You have an error in your SQL
设想,如果是100而不是1的话:
Random r = new Random();
int sum = 100; //产生了N-1个0-100之间的随机数
for(int i = 0; i < N-1 ; i++)
{
int m = r.Next(0, sum);
sum -=m;
}
//最后一个应该是sum
现在的问题就是怎么产生 0-1之间的随机数字了
public static double[] rand(int n) {
double[] array = new double[n];
Random random = new Random();
double sum = 0;
for (int i = 0; i < n - 1; i++) {
double d = random.nextDouble() * (1 - sum);
array[i] = d;
sum += d;
}
array[n - 1] = 1 - sum;
return array;
}