t******g 发帖数: 4044 | 1 要产生十个0到1随机数加一起是1
我现在用的办法是分别十个随机数求和,再分别把每个随机数除以和重新scaling
这样的问题是每个随机数都很难到达边界附近,例如一个数是0.99,其他9个数的和是0
.01,这种情况很难产生,请问有什么好办法?多谢了 |
w********e 发帖数: 8594 | 2 随机产生九个0到1之间的数(你十个随机数的自由度本来就只有九),然后用他们把0
到1之间的线段切成十份。每段的长度就是个随机数。
我觉得你还应当想清楚这些数到底要服从什么样的分布。总和为1的十个随机数可以有
很多种分布。 |
n*****t 发帖数: 22014 | 3 随机数平方、立方、四次方 。。。直到你满意为止
是0
【在 t******g 的大作中提到】 : 要产生十个0到1随机数加一起是1 : 我现在用的办法是分别十个随机数求和,再分别把每个随机数除以和重新scaling : 这样的问题是每个随机数都很难到达边界附近,例如一个数是0.99,其他9个数的和是0 : .01,这种情况很难产生,请问有什么好办法?多谢了
|
t******g 发帖数: 4044 | 4 你这个解法和我的解法是等价的,同样很难生成一个数0.99,其余九个加起来0.01这种
情况。
0
【在 w********e 的大作中提到】 : 随机产生九个0到1之间的数(你十个随机数的自由度本来就只有九),然后用他们把0 : 到1之间的线段切成十份。每段的长度就是个随机数。 : 我觉得你还应当想清楚这些数到底要服从什么样的分布。总和为1的十个随机数可以有 : 很多种分布。
|
l******t 发帖数: 55733 | |
s*****e 发帖数: 16824 | 6 你这么搞,最后是个正态分布,你需要一个平均分布。但是具体怎么产生一个平均分布
,我还没想好。
是0
【在 t******g 的大作中提到】 : 要产生十个0到1随机数加一起是1 : 我现在用的办法是分别十个随机数求和,再分别把每个随机数除以和重新scaling : 这样的问题是每个随机数都很难到达边界附近,例如一个数是0.99,其他9个数的和是0 : .01,这种情况很难产生,请问有什么好办法?多谢了
|
l******t 发帖数: 55733 | |
w********9 发帖数: 8613 | 8
是0
10个原始的(准)随机数(假设是在0和1之间)应该是比较均匀地分布在0和1之间。
但在scaling后,任何选定的9个以外的那个是个有关联的数,其实已经不是个随机数了
。即使改变方法,总有一个不是随机数。
重新考虑。10个随机数加起来必须是1,当然是去掉了加起来是【0,1)和(1,10】的
所有候选的10个数的数组。其中任何一个更难接近1的可能性本来就会小了很多。这很
好理解,想想极端的情况:如果不是10个数,而是1亿个数。
【在 t******g 的大作中提到】 : 要产生十个0到1随机数加一起是1 : 我现在用的办法是分别十个随机数求和,再分别把每个随机数除以和重新scaling : 这样的问题是每个随机数都很难到达边界附近,例如一个数是0.99,其他9个数的和是0 : .01,这种情况很难产生,请问有什么好办法?多谢了
|
s********y 发帖数: 473 | 9 随即产生10个数,归一化不就好了。
你们这些廊庑,生物,振臂,就是少了正轨的数学训练。 |
t******g 发帖数: 4044 | 10 主要是想做risk return的frontier,所以希望尽可能sample所有可能,至于
distribution到不是太在乎。
我想了下,先生成十个0到1随机数,然后取对数,然后再求和scaling回来。这样结果
好一些。不过如果不是十个随机数,是一百个,一千个,效果就还是不好。
【在 s*****e 的大作中提到】 : 你这么搞,最后是个正态分布,你需要一个平均分布。但是具体怎么产生一个平均分布 : ,我还没想好。 : : 是0
|
|
|
I*3 发帖数: 7012 | 11 点后两位小数和点后两百位小数是不一样的。
不说几位小数,这题尼玛能做吗?
是0
【在 t******g 的大作中提到】 : 要产生十个0到1随机数加一起是1 : 我现在用的办法是分别十个随机数求和,再分别把每个随机数除以和重新scaling : 这样的问题是每个随机数都很难到达边界附近,例如一个数是0.99,其他9个数的和是0 : .01,这种情况很难产生,请问有什么好办法?多谢了
|
j****i 发帖数: 68152 | 12 多个随机数的和服从正态分布。所以不存在十个随机数其和为一,每个数又服从平均分
步 |
n*******4 发帖数: 2285 | 13 产生10个随机数,再随机选取其中之一,把它乘上一个因子,比如100. 再用你的求和,
scaling不就行了?
【在 t******g 的大作中提到】 : 主要是想做risk return的frontier,所以希望尽可能sample所有可能,至于 : distribution到不是太在乎。 : 我想了下,先生成十个0到1随机数,然后取对数,然后再求和scaling回来。这样结果 : 好一些。不过如果不是十个随机数,是一百个,一千个,效果就还是不好。
|
t**d 发帖数: 6474 | 14 既然是随机数,又要求加起来等于1,是矛盾的。
如果严格要求等于1的话,可以产生10个0-0.1的随机数,如果和不等于1,可以把具有
中间值的两个增减一下使和等于1,不过随机性就破坏了一点。
是0
【在 t******g 的大作中提到】 : 要产生十个0到1随机数加一起是1 : 我现在用的办法是分别十个随机数求和,再分别把每个随机数除以和重新scaling : 这样的问题是每个随机数都很难到达边界附近,例如一个数是0.99,其他9个数的和是0 : .01,这种情况很难产生,请问有什么好办法?多谢了
|
b*******8 发帖数: 37364 | |
Q***5 发帖数: 994 | 16 随机取10个(0,1)间的数,每个数取N次方,再用和归一。
理论上,当N趋近无穷时,你可以以几乎1的概率得到其中一个>0.99
你可以按需要调整N。 |
m**********e 发帖数: 12525 | 17 我尻!
你们这帮文科屁民这数学功底之差,太令人震惊了
10个随机数,n1, n2, n3,...n10,满足n1+n2+...+n10=1,这说明这
里面只有9个是完全独立的,
所以你产生9个随机数,第十个按照1-n1-n2-,.,n9产生,不就完了?
妈的,蠢透了,连什么是独立随机变量都不懂
【在 j****i 的大作中提到】 : 多个随机数的和服从正态分布。所以不存在十个随机数其和为一,每个数又服从平均分 : 步
|
Q***5 发帖数: 994 | 18 那样,第十个可能是负的
【在 m**********e 的大作中提到】 : 我尻! : 你们这帮文科屁民这数学功底之差,太令人震惊了 : 10个随机数,n1, n2, n3,...n10,满足n1+n2+...+n10=1,这说明这 : 里面只有9个是完全独立的, : 所以你产生9个随机数,第十个按照1-n1-n2-,.,n9产生,不就完了? : 妈的,蠢透了,连什么是独立随机变量都不懂
|
j****i 发帖数: 68152 | 19 笑死。这九个数加起来就超过1的可能性接近100%
【在 m**********e 的大作中提到】 : 我尻! : 你们这帮文科屁民这数学功底之差,太令人震惊了 : 10个随机数,n1, n2, n3,...n10,满足n1+n2+...+n10=1,这说明这 : 里面只有9个是完全独立的, : 所以你产生9个随机数,第十个按照1-n1-n2-,.,n9产生,不就完了? : 妈的,蠢透了,连什么是独立随机变量都不懂
|
m**********e 发帖数: 12525 | 20 你妈的,normalization
【在 Q***5 的大作中提到】 : 那样,第十个可能是负的
|
|
|
j****i 发帖数: 68152 | 21 normalize完了每个数就成normal分布了
【在 m**********e 的大作中提到】 : 你妈的,normalization
|
m**********e 发帖数: 12525 | 22 normalization,拜托,找本课本看看,受约束系统generating function怎么写
【在 j****i 的大作中提到】 : 笑死。这九个数加起来就超过1的可能性接近100%
|
Q***5 发帖数: 994 | 23 当变量数比10大很多的化,数值上有个小trick:
先找到最大数,所有数都先除以这个数。。。
【在 Q***5 的大作中提到】 : 随机取10个(0,1)间的数,每个数取N次方,再用和归一。 : 理论上,当N趋近无穷时,你可以以几乎1的概率得到其中一个>0.99 : 你可以按需要调整N。
|
j****i 发帖数: 68152 | 24 normalize之后,这些数全都是normal分布了。楼主的意思是想产生10随机数,总和是1
,每个数符合平均分布。这是不可能的,因为多个平均分布随机数的和符合正态分布。
文科生瞎想,不知道对不对
【在 m**********e 的大作中提到】 : normalization,拜托,找本课本看看,受约束系统generating function怎么写
|
Q***5 发帖数: 994 | 25 俺没注意,其实别人已经建议过俺说的办法了。
【在 n*****t 的大作中提到】 : 随机数平方、立方、四次方 。。。直到你满意为止 : : 是0
|
m**********e 发帖数: 12525 | 26 当然不可能的,加了约束条件原始分布就变了
丫这个问题,物理里面有大量研究,约束条件不是总和为1,而是能量守恒
一个分子链,施加能量E后产生随机振动,各分子能量随机但是总和必须为E,
找本统计物理课本看看就知道了,分布是啥就知道了
是1
【在 j****i 的大作中提到】 : normalize之后,这些数全都是normal分布了。楼主的意思是想产生10随机数,总和是1 : ,每个数符合平均分布。这是不可能的,因为多个平均分布随机数的和符合正态分布。 : 文科生瞎想,不知道对不对
|
j****i 发帖数: 68152 | 27 到底是理科生,一下就点到本质,佩服
【在 m**********e 的大作中提到】 : 当然不可能的,加了约束条件原始分布就变了 : 丫这个问题,物理里面有大量研究,约束条件不是总和为1,而是能量守恒 : 一个分子链,施加能量E后产生随机振动,各分子能量随机但是总和必须为E, : 找本统计物理课本看看就知道了,分布是啥就知道了 : : 是1
|
Q***5 发帖数: 994 | 28 楼主应该把要求写清楚些。
估计除了和为1,还要求都非负,而且对称。
当然,满足这些条件的分布也有无穷多,估计楼主也就是找个比较容易实现的。 |
m**********e 发帖数: 12525 | 29 仔细看了下
楼主这问题,其实不简单,复杂程度超出楼主的想象,以目前楼主给出的条件,是
无法得到正确答案的,楼主需要提供更多的细节。
【在 j****i 的大作中提到】 : 到底是理科生,一下就点到本质,佩服
|
M********n 发帖数: 4650 | 30 什么玩意,你加了(和为1)这个限制,自由度就只有9了,不可能10个随机数。
是0
【在 t******g 的大作中提到】 : 要产生十个0到1随机数加一起是1 : 我现在用的办法是分别十个随机数求和,再分别把每个随机数除以和重新scaling : 这样的问题是每个随机数都很难到达边界附近,例如一个数是0.99,其他9个数的和是0 : .01,这种情况很难产生,请问有什么好办法?多谢了
|
|
|
m**********e 发帖数: 12525 | 31 这个问题先假设N1,N2,...N10为随机变量,而且满足N1+N2+...+N10=1
第一步,必须求出Ni的分布
第二步,再设计程序,按分布产生随机数
楼主的问题是没搞清楚第一步的重要性,第一步怎么走,参见partition function:
http://en.wikipedia.org/wiki/Partition_function_(mathematics)
所以,怪不得华尔街的投行都需要招physics phd |
G*******n 发帖数: 6889 | |
B*Q 发帖数: 25729 | |
x********e 发帖数: 35261 | 34 数学弱智问一下啊,为什么不能从0-1中生成一个随机数N1再从0-(1-N1)中生成随机数
N2直到N9?
【在 m**********e 的大作中提到】 : 这个问题先假设N1,N2,...N10为随机变量,而且满足N1+N2+...+N10=1 : 第一步,必须求出Ni的分布 : 第二步,再设计程序,按分布产生随机数 : 楼主的问题是没搞清楚第一步的重要性,第一步怎么走,参见partition function: : http://en.wikipedia.org/wiki/Partition_function_(mathematics) : 所以,怪不得华尔街的投行都需要招physics phd
|
t******g 发帖数: 4044 | 35 可以,但生成随机数的顺序就有关系了。先生成的数大的可能性就大,后生成的数大的
可能性就小了。
数
【在 x********e 的大作中提到】 : 数学弱智问一下啊,为什么不能从0-1中生成一个随机数N1再从0-(1-N1)中生成随机数 : N2直到N9?
|
m**********e 发帖数: 12525 | 36 因为约束条件会影响随机变量的分布函数
比如,一个方形弹性容器,里面一个运动分子在没有任何外力的情况下,
分布是均匀的,任何地方都有相同的出现概率,这个时候分子能量E对结
果不产生影响
但是,如果方形容器放在重力场里面,由于能量守恒,当分子往高处飞行
的时候,速度减小,这样会导致出现可能降低,这个时候,由于能量守恒
这个约束条件,能量E会对结果产生影响,最后分布不是均匀的了,变成指
数分布
数
【在 x********e 的大作中提到】 : 数学弱智问一下啊,为什么不能从0-1中生成一个随机数N1再从0-(1-N1)中生成随机数 : N2直到N9?
|
Q***5 发帖数: 994 | 37 你是要sample不同assets的权重吗?一般找frontier 是用有限制情况下的最优化。你
们用蒙特卡罗?
【在 t******g 的大作中提到】 : 可以,但生成随机数的顺序就有关系了。先生成的数大的可能性就大,后生成的数大的 : 可能性就小了。 : : 数
|
x********e 发帖数: 35261 | 38 你这个比方不对。十个数是有权重的,而箱子的限制与加和为1不可类比。
你还不如说有1g沙抓九次呢。
【在 m**********e 的大作中提到】 : 因为约束条件会影响随机变量的分布函数 : 比如,一个方形弹性容器,里面一个运动分子在没有任何外力的情况下, : 分布是均匀的,任何地方都有相同的出现概率,这个时候分子能量E对结 : 果不产生影响 : 但是,如果方形容器放在重力场里面,由于能量守恒,当分子往高处飞行 : 的时候,速度减小,这样会导致出现可能降低,这个时候,由于能量守恒 : 这个约束条件,能量E会对结果产生影响,最后分布不是均匀的了,变成指 : 数分布 : : 数
|
x********e 发帖数: 35261 | 39 先后生成也有关系?生成后shuffle十个数不就行了。
【在 t******g 的大作中提到】 : 可以,但生成随机数的顺序就有关系了。先生成的数大的可能性就大,后生成的数大的 : 可能性就小了。 : : 数
|
m**********e 发帖数: 12525 | 40 你这智商,箱子限制相当于Ni取值区间【0,1】
N1+N2+...+N10=1的限制,相当于能量守恒,这个约束我们可以写成哈密顿形式:
H=1-N1-N2-...N10
这个1,就是能量
妈的,这里除了坑王,别人都不行,肏,差距太大了
【在 x********e 的大作中提到】 : 你这个比方不对。十个数是有权重的,而箱子的限制与加和为1不可类比。 : 你还不如说有1g沙抓九次呢。
|
|
|
x********e 发帖数: 35261 | 41 你到底看的是分子在箱子里的分布还是能量?你要是限制能量,跟分子在箱子里的位置
有什么关系?
【在 m**********e 的大作中提到】 : 你这智商,箱子限制相当于Ni取值区间【0,1】 : N1+N2+...+N10=1的限制,相当于能量守恒,这个约束我们可以写成哈密顿形式: : H=1-N1-N2-...N10 : 这个1,就是能量 : 妈的,这里除了坑王,别人都不行,肏,差距太大了
|
f******k 发帖数: 297 | 42 classic problem. to sample uniformly from a n-dim simplex, first draw n
random variables independently from the exponential distribution, then
normalize. |
m**********e 发帖数: 12525 | 43 随机函数F(X),X∈[0,1], F(X)∈[0,1]
ok?
【在 x********e 的大作中提到】 : 你到底看的是分子在箱子里的分布还是能量?你要是限制能量,跟分子在箱子里的位置 : 有什么关系?
|
x********e 发帖数: 35261 | 44 你的回答跟我的问题无关啊
【在 m**********e 的大作中提到】 : 随机函数F(X),X∈[0,1], F(X)∈[0,1] : ok?
|
m**********e 发帖数: 12525 | 45 你看不懂而已
【在 x********e 的大作中提到】 : 你的回答跟我的问题无关啊
|
m**********e 发帖数: 12525 | 46 你这个是对的
N维线性约束的partition function,最后得到exponential distribution
【在 f******k 的大作中提到】 : classic problem. to sample uniformly from a n-dim simplex, first draw n : random variables independently from the exponential distribution, then : normalize.
|
d******r 发帖数: 16947 | 47 每次产生的数作为UB,重新作[0,ui]的均匀分布,10次后应该趋进于1
是0
【在 t******g 的大作中提到】 : 要产生十个0到1随机数加一起是1 : 我现在用的办法是分别十个随机数求和,再分别把每个随机数除以和重新scaling : 这样的问题是每个随机数都很难到达边界附近,例如一个数是0.99,其他9个数的和是0 : .01,这种情况很难产生,请问有什么好办法?多谢了
|
m**********e 发帖数: 12525 | 48 http://www.mitbbs.com/article/Military/44578463_0.html
【在 d******r 的大作中提到】 : 每次产生的数作为UB,重新作[0,ui]的均匀分布,10次后应该趋进于1 : : 是0
|
x********e 发帖数: 35261 | 49 我都说了我是数学白痴
我就觉得你那个箱子的比喻不合理
【在 m**********e 的大作中提到】 : 你看不懂而已
|
d******r 发帖数: 16947 | |
|
|
t******g 发帖数: 4044 | 51 多谢,那基本和我之前说的,先生成0,1均匀分布,再取对数是一样的了,就是lamda=
1的exponential distribution.
【在 f******k 的大作中提到】 : classic problem. to sample uniformly from a n-dim simplex, first draw n : random variables independently from the exponential distribution, then : normalize.
|
K*****2 发帖数: 9308 | |
s****b 发帖数: 2039 | 53 我觉得,这是一个什么样的问题啊??就好像要找到一个圆球,它的形状必须是方的一
样:既然都是随机数,加起来怎么可能肯定等于1?理论上讲,10个随机数加起来等
于1的概率是0。如果是计算机生成点后三位随机数,10个加起来等于1的概率是在
0.000, 0.001, ..., 1.000, ..., 9.990 上某个离散概率分布在1.000上的值吧,估
计机会也很小,只能反复try了,没有别的办法吧?
是0
【在 t******g 的大作中提到】 : 要产生十个0到1随机数加一起是1 : 我现在用的办法是分别十个随机数求和,再分别把每个随机数除以和重新scaling : 这样的问题是每个随机数都很难到达边界附近,例如一个数是0.99,其他9个数的和是0 : .01,这种情况很难产生,请问有什么好办法?多谢了
|
s****b 发帖数: 2039 | 54 似乎这个办法比较正确
【在 m**********e 的大作中提到】 : 这个问题先假设N1,N2,...N10为随机变量,而且满足N1+N2+...+N10=1 : 第一步,必须求出Ni的分布 : 第二步,再设计程序,按分布产生随机数 : 楼主的问题是没搞清楚第一步的重要性,第一步怎么走,参见partition function: : http://en.wikipedia.org/wiki/Partition_function_(mathematics) : 所以,怪不得华尔街的投行都需要招physics phd
|
s****b 发帖数: 2039 | 55 比方说三位的随机数,从0-1中生成一个随机数N1的概率是1/1000(一般0-1是有
0没有1),如果N1是0.100,下面一个随机数N2将从0-0.9之间产生,概率是1/900
。N1和N2概率不相等了,所以就已经不是随机数了。
数
【在 x********e 的大作中提到】 : 数学弱智问一下啊,为什么不能从0-1中生成一个随机数N1再从0-(1-N1)中生成随机数 : N2直到N9?
|
m***n 发帖数: 12188 | 56 楼主没有给出要求什么分布。
除了约束,楼主似乎想要一个严重bias到1的分布。
我看这可以改写为discrete 随机分配问题。
长度为1的线段,随机分10段。
在假定是 [0,1],(0,1)可以小小修改。
首先,假定精度为小数点后一位。那就是有11个数:0,1,...,10
均匀随机选取11次。间距就是10个数。其中会有0,可以理解。
如果需要精度为2位,那就是有0, 1, ..., 11, ...,99, 100个数。
从此样本种,还是随机抽取11次。得到10个间距。
如是类推。
服从什么分布,也不难推出来。 |
d*****g 发帖数: 4364 | 57 归一化
是0
【在 t******g 的大作中提到】 : 要产生十个0到1随机数加一起是1 : 我现在用的办法是分别十个随机数求和,再分别把每个随机数除以和重新scaling : 这样的问题是每个随机数都很难到达边界附近,例如一个数是0.99,其他9个数的和是0 : .01,这种情况很难产生,请问有什么好办法?多谢了
|
f*****n 发帖数: 405 | 58 产生9个[0,0.1)之间随机数,另一个是1-这9个数之和。但产生一个数是0.99的概率是
1/10^9 |
W*******n 发帖数: 4140 | 59 At nighttime, you bring it to Wall Street. At daytime, you bring it to
Congress. They both give a fucking dollar. You get the answer?
If you still don't get it, go to the nearest church, which will give you a
fucking dollar too. You are fucked up, if you still don't get it.
是0
【在 t******g 的大作中提到】 : 要产生十个0到1随机数加一起是1 : 我现在用的办法是分别十个随机数求和,再分别把每个随机数除以和重新scaling : 这样的问题是每个随机数都很难到达边界附近,例如一个数是0.99,其他9个数的和是0 : .01,这种情况很难产生,请问有什么好办法?多谢了
|
P*T 发帖数: 17 | 60 你可以从这10个数里随机读取数据,就和顺序无关了。
【在 t******g 的大作中提到】 : 可以,但生成随机数的顺序就有关系了。先生成的数大的可能性就大,后生成的数大的 : 可能性就小了。 : : 数
|
|
|
b*******i 发帖数: 594 | 61 这个问题怎么不去数学或者统计版问?
问题本身不难,但楼主的要求是“每个随机数都很难到达边界附近,例如一个数是0.99
,其他9个数的和是0.01”。
原因在哪里?楼主用的产生随机数的分布不对,我猜楼主多半用的是均匀分布,那几乎
不可能达到要求。
我的算法:
1。产生9个服从Beta分布的随机数,Beta的参数取alpha=1,beta=100(beta取大数)
2。把这9个数从小到大排序y1,y2,...,y9
3。令x1=y1-0,x2=y2-y1,x3=y3-y2,...x10=1-y9
结束 |
I********x 发帖数: 858 | 62 如果我随机生成10个整数,然后求和,每个数除以这个和所得新数作为生产的结果,这
样不符合条件吗?
99
【在 b*******i 的大作中提到】 : 这个问题怎么不去数学或者统计版问? : 问题本身不难,但楼主的要求是“每个随机数都很难到达边界附近,例如一个数是0.99 : ,其他9个数的和是0.01”。 : 原因在哪里?楼主用的产生随机数的分布不对,我猜楼主多半用的是均匀分布,那几乎 : 不可能达到要求。 : 我的算法: : 1。产生9个服从Beta分布的随机数,Beta的参数取alpha=1,beta=100(beta取大数) : 2。把这9个数从小到大排序y1,y2,...,y9 : 3。令x1=y1-0,x2=y2-y1,x3=y3-y2,...x10=1-y9 : 结束
|
l*******s 发帖数: 7316 | 63 菌斑太挫了,应该去笑版问学术问题。
你要搞清楚这10个随机数不可能是0到1之间均匀分布的。所以0.99出现的概率远小于0.
1出现的概率是正常的。
虽然没有明确的分布概率,但有些规律还是明显的。
至少你希望这10个随机数中每个数的概率分布是相同的,那么它们的期望值也是相同的
。而每次抽样的结果10个数加一起总是1, 也就是10个随机数的期望值的和是1。每个
随机数的期望值是0.1。
了解了这一点,你就知道你的方法没什么大问题,很难达到0.99是正常的。
归一或你说的scaling是可以的,如果不满意也可以用别的方法。
有一个ID说先产生的一个,再在剩余的范围内先产生第二个。 这样很明显,每个数的
期望值越来越小。有人说然后再shuffle,也许可以,但太麻烦了。
比归一稍微复杂一点的办法,可以按均匀概率在[0,1]产生之间9个随机数,把[0,1]
随机分为10段,取每段的长度为10个随机数的值。这个方法需要9个数排序。
是0
【在 t******g 的大作中提到】 : 要产生十个0到1随机数加一起是1 : 我现在用的办法是分别十个随机数求和,再分别把每个随机数除以和重新scaling : 这样的问题是每个随机数都很难到达边界附近,例如一个数是0.99,其他9个数的和是0 : .01,这种情况很难产生,请问有什么好办法?多谢了
|
b*******i 发帖数: 594 | 64 10个随机数加起来是1很容易实现,你的方法就可以。关键在于楼主的要求是“1个接近
1,另外9个接近0”,这就要选择恰当的随机分布了,如果是按均匀分布生成随机数,
那就达不到楼主的要求。
【在 I********x 的大作中提到】 : 如果我随机生成10个整数,然后求和,每个数除以这个和所得新数作为生产的结果,这 : 样不符合条件吗? : : 99
|
l*******s 发帖数: 7316 | 65 LZ不知道自己要求什么,所以才来问。
【在 b*******i 的大作中提到】 : 10个随机数加起来是1很容易实现,你的方法就可以。关键在于楼主的要求是“1个接近 : 1,另外9个接近0”,这就要选择恰当的随机分布了,如果是按均匀分布生成随机数, : 那就达不到楼主的要求。
|
l*******e 发帖数: 1869 | 66 你说的这种情况本来就是小概率事件,怎么可以强求随机数去打概率实现呢 ?
如果你非要这种边界,你干脆定一个数是 0.99, 然后其它数随机产生和 0.01 算了。
是0
【在 t******g 的大作中提到】 : 要产生十个0到1随机数加一起是1 : 我现在用的办法是分别十个随机数求和,再分别把每个随机数除以和重新scaling : 这样的问题是每个随机数都很难到达边界附近,例如一个数是0.99,其他9个数的和是0 : .01,这种情况很难产生,请问有什么好办法?多谢了
|
s********l 发帖数: 439 | 67 我不知道你到底想要这10个数满足什么样的分布。如果你想把[0 1] ”均匀地“ 分成
10块,也就是所谓的uniform random partition的话,标准的做法有两种,一是生成10
个独立同分布的指数分布的随机数,也就是10个 EXP(1),然后rescaling;二是生成9
个均匀分布的随机数,然后排序,把这9个数作为partition,把[0 1]分成10块。可以
证明这两种做法生成的分布是一样的。
直接加起来rescaling是不对的,这样会有bias。
是0
【在 t******g 的大作中提到】 : 要产生十个0到1随机数加一起是1 : 我现在用的办法是分别十个随机数求和,再分别把每个随机数除以和重新scaling : 这样的问题是每个随机数都很难到达边界附近,例如一个数是0.99,其他9个数的和是0 : .01,这种情况很难产生,请问有什么好办法?多谢了
|
n*******r 发帖数: 2010 | 68 hehe.
楼主想要的模型和他的物理世界一致吗
【在 s****b 的大作中提到】 : 我觉得,这是一个什么样的问题啊??就好像要找到一个圆球,它的形状必须是方的一 : 样:既然都是随机数,加起来怎么可能肯定等于1?理论上讲,10个随机数加起来等 : 于1的概率是0。如果是计算机生成点后三位随机数,10个加起来等于1的概率是在 : 0.000, 0.001, ..., 1.000, ..., 9.990 上某个离散概率分布在1.000上的值吧,估 : 计机会也很小,只能反复try了,没有别的办法吧? : : 是0
|
s********l 发帖数: 439 | 69 看了半天,这是第一个正确答案
【在 f******k 的大作中提到】 : classic problem. to sample uniformly from a n-dim simplex, first draw n : random variables independently from the exponential distribution, then : normalize.
|
s****b 发帖数: 2039 | 70 你不是问有没有什么好办法吗?跑下面这个程序就可以了,和是1,每个随机数乘0.
001。我
跑了半天还没得到结果。你自己用快的计算机去跑吧。
***
import java.util.Random;
public class Haha {
public static void main(String[] args) {
Random rn = new Random();
int t=0;
String s="";
while (t != 1000) {
t=0;
s="";
for (int i=0; i<10; i++) {
int r = rn.nextInt(1001);
t=t+r;
s=s+r+" ";
}
}
System.out.println("sum = "+t);
System.out.println("the random numbers are: "+s);
}
}
***
是0
【在 t******g 的大作中提到】 : 要产生十个0到1随机数加一起是1 : 我现在用的办法是分别十个随机数求和,再分别把每个随机数除以和重新scaling : 这样的问题是每个随机数都很难到达边界附近,例如一个数是0.99,其他9个数的和是0 : .01,这种情况很难产生,请问有什么好办法?多谢了
|
|
|
s****b 发帖数: 2039 | 71 10个数的和我不知道是什么分布,但是和从0到10,分布应该是以5为中心吧,似乎和
是5的概率很大。上面这个程序设成 t!=5000,很快就得到答案了:
sum = 5000
the random numbers are: 636 476 514 970 266 334 797 146 126 735
也就是(.636 .476 .514 .970 .266 .334 .797 .146 .126 .735), 和是5。
和是1的概率很小,所以跑半天还没有结果。
不知道你为什么一定要10个随机数的和是1,是不是要求达到必然发生事件有关?
如果不一定要求和是1,把和往5左右凑比较方便。
【在 s****b 的大作中提到】 : 你不是问有没有什么好办法吗?跑下面这个程序就可以了,和是1,每个随机数乘0. : 001。我 : 跑了半天还没得到结果。你自己用快的计算机去跑吧。 : *** : import java.util.Random; : public class Haha { : public static void main(String[] args) { : Random rn = new Random(); : int t=0; : String s="";
|
s****b 发帖数: 2039 | 72 用下面这个办法,可以看到每次的10个随机数,以及和是多少。最后到和是1000
停止。
***
import java.util.Random;
public class Ha {
public static void main(String[] args) {
Random rn = new Random();
int t=0;
String s="";
while (t != 1000) {
t=0;
s="";
for (int i=0; i<10; i++) {
int r = rn.nextInt(1001);
t=t+r;
s=s+r+" ";
System.out.println("sum = "+t);
System.out.println("the random numbers are: "+s);
}
}
}
}
***
【在 s****b 的大作中提到】 : 10个数的和我不知道是什么分布,但是和从0到10,分布应该是以5为中心吧,似乎和 : 是5的概率很大。上面这个程序设成 t!=5000,很快就得到答案了: : sum = 5000 : the random numbers are: 636 476 514 970 266 334 797 146 126 735 : 也就是(.636 .476 .514 .970 .266 .334 .797 .146 .126 .735), 和是5。 : 和是1的概率很小,所以跑半天还没有结果。 : 不知道你为什么一定要10个随机数的和是1,是不是要求达到必然发生事件有关? : 如果不一定要求和是1,把和往5左右凑比较方便。
|
I*a 发帖数: 297 | 73 我靠,就一简单随机数生成问题,就吵成这样。简单的说,在2维情况下,就是平面坐
标上一条45度斜角的线段x+y=1 (0
于啥分布,自然是看楼主喜欢,有了点在线段的相对位置,自然可以project到原来的
平面坐标中得到x and y。
在n维情况下,就是求一个在空间的锥体的底面的随机分布,这个分布是啥,自然还是
看楼主喜欢,有了这个平面上的分布,可以再投影到原n维空间,得到坐标x1,x2,...xn
特别要是需要这个面上的分布是均匀的,这早有现成的算法
1。快速的算法,利用次序统计量,就是生成9个0,1 之间均匀分布的数加 0 和1,然
后排序,相邻两个的差就是你要的x1,..,x10
2。利用指数分布,生成指数分布,然后相加再normalize 到1 |
n**********r 发帖数: 2061 | 74 用Excel解
第一列
A2:A10 =RAND()
第二列
B2:B10 =RANK(A2,$A$2:$A$10,1)
第三列
C2:C10 =IF(B2=1,A2,A2-INDEX($A$2:$A$10,MATCH(B2-1,$B$2:$B$10,0)))
C11 =1-SUM(C2:C10) |
s********l 发帖数: 439 | 75 那个“锥体的底面”叫simplex,n >= 3的时候不是平面
xn
【在 I*a 的大作中提到】 : 我靠,就一简单随机数生成问题,就吵成这样。简单的说,在2维情况下,就是平面坐 : 标上一条45度斜角的线段x+y=1 (0: 于啥分布,自然是看楼主喜欢,有了点在线段的相对位置,自然可以project到原来的 : 平面坐标中得到x and y。 : 在n维情况下,就是求一个在空间的锥体的底面的随机分布,这个分布是啥,自然还是 : 看楼主喜欢,有了这个平面上的分布,可以再投影到原n维空间,得到坐标x1,x2,...xn : 特别要是需要这个面上的分布是均匀的,这早有现成的算法 : 1。快速的算法,利用次序统计量,就是生成9个0,1 之间均匀分布的数加 0 和1,然 : 后排序,相邻两个的差就是你要的x1,..,x10 : 2。利用指数分布,生成指数分布,然后相加再normalize 到1
|
w********9 发帖数: 8613 | 76
老早我就在这个贴里,从两个角度,尽量用粗浅/“科普”的方式回答了楼主原始题目
里的问题和疑惑
。还争什么呢?
【在 w********9 的大作中提到】 : : 是0 : 10个原始的(准)随机数(假设是在0和1之间)应该是比较均匀地分布在0和1之间。 : 但在scaling后,任何选定的9个以外的那个是个有关联的数,其实已经不是个随机数了 : 。即使改变方法,总有一个不是随机数。 : 重新考虑。10个随机数加起来必须是1,当然是去掉了加起来是【0,1)和(1,10】的 : 所有候选的10个数的数组。其中任何一个更难接近1的可能性本来就会小了很多。这很 : 好理解,想想极端的情况:如果不是10个数,而是1亿个数。
|
w********9 发帖数: 8613 | 77 第二个角度是:在理想的完全随机的情况下,与楼主的做法等效的是,如果生成10个完
全随机数之和不为1,它们就被抛弃;为1则取。这相当于破坏了那10个所选数的随机性。 |
I*a 发帖数: 297 | 78 你在国内读过数学吗,我知道叫simplex,在国内,这种东西就叫n维空间的超平面。
基本上在一个线形空间x1, x2, ..., xn
形如
a1x1+..,+anxn=c
就定义了n维空间的一个(超)平面
【在 s********l 的大作中提到】 : 那个“锥体的底面”叫simplex,n >= 3的时候不是平面 : : xn
|
s****b 发帖数: 2039 | 79 ??
在这种情况下,虽然10个数字不是随机取的,而是有目的的用和是1的条件选取的,
但是每个数字出现的概率是相同的。
性。
【在 w********9 的大作中提到】 : 第二个角度是:在理想的完全随机的情况下,与楼主的做法等效的是,如果生成10个完 : 全随机数之和不为1,它们就被抛弃;为1则取。这相当于破坏了那10个所选数的随机性。
|
g*******l 发帖数: 239 | 80 我能想到的一个最快的方法是直接选9个0到1之间的不同的随机数,从小到大排列,然
后将0和1也放入其中,这样11个数的间隔就是10个数了,而且其和是1。只是不知道这
样产生的10个数是不是随机(或者服从某种分布)
是0
【在 t******g 的大作中提到】 : 要产生十个0到1随机数加一起是1 : 我现在用的办法是分别十个随机数求和,再分别把每个随机数除以和重新scaling : 这样的问题是每个随机数都很难到达边界附近,例如一个数是0.99,其他9个数的和是0 : .01,这种情况很难产生,请问有什么好办法?多谢了
|
|
|
s****b 发帖数: 2039 | 81 嗯,要考虑楼主在事情后面真正想要解决的那个问题,是不是有问题。
【在 n*******r 的大作中提到】 : hehe. : 楼主想要的模型和他的物理世界一致吗
|
s****b 发帖数: 2039 | 82 OK,找到了一组,你自己随便用吧。
sum = 1000
the random numbers are: 109 50 10 305 82 95 11 76 215 47
就是(.109 .050 .010 .305 .082 .095 .011 .076 .215 .047)
是0
【在 t******g 的大作中提到】 : 要产生十个0到1随机数加一起是1 : 我现在用的办法是分别十个随机数求和,再分别把每个随机数除以和重新scaling : 这样的问题是每个随机数都很难到达边界附近,例如一个数是0.99,其他9个数的和是0 : .01,这种情况很难产生,请问有什么好办法?多谢了
|
s****b 发帖数: 2039 | 83 又找到一组。看来最好的办法就是出钱雇俺为你找了,呵呵。
sum = 1000
the random numbers are: 97 202 162 59 58 47 61 43 62 209
就是(.097 .202 .162 .059 .058 .047 .061 .043 .062 .209),和是1。
是0
【在 t******g 的大作中提到】 : 要产生十个0到1随机数加一起是1 : 我现在用的办法是分别十个随机数求和,再分别把每个随机数除以和重新scaling : 这样的问题是每个随机数都很难到达边界附近,例如一个数是0.99,其他9个数的和是0 : .01,这种情况很难产生,请问有什么好办法?多谢了
|
s****b 发帖数: 2039 | 84 sum = 1000
the random numbers are: 94 47 70 20 32 34 156 197 313 37
sum = 1000
the random numbers are: 106 136 143 61 57 99 27 78 250 43
sum = 1000
the random numbers are: 140 118 370 46 107 67 27 34 49 42
修改一下我前面的程序,规定其中一个随机数必须 >=0.99,彻底解决问题!
烦死了!
是0
【在 t******g 的大作中提到】 : 要产生十个0到1随机数加一起是1 : 我现在用的办法是分别十个随机数求和,再分别把每个随机数除以和重新scaling : 这样的问题是每个随机数都很难到达边界附近,例如一个数是0.99,其他9个数的和是0 : .01,这种情况很难产生,请问有什么好办法?多谢了
|
v**o 发帖数: 4956 | 85 现在码工的数学素养怎么这么逊啊
有限个随机数加起来还是随机数,怎么会等于1?
随机数只有期望值,没有确定值的
尽管算法产生的叫伪随机数,说多了你还是不懂 |
m**********e 发帖数: 12525 | 86 你其实也是啥也不懂
10个均匀分布随机变量,受约束条件后只有9个独立随机变量了.由于约束条件,
分布函数可以用partition function求出来,对于线性约束,答案是exp函数
虽然是随机变量,但是约束条件总是严格成立的,举个例子,气体分子在大气层中
可以随机移动,但是无论移动到哪里,能量守恒(动能+引力势能)这个约束条件
永远严格成立
【在 v**o 的大作中提到】 : 现在码工的数学素养怎么这么逊啊 : 有限个随机数加起来还是随机数,怎么会等于1? : 随机数只有期望值,没有确定值的 : 尽管算法产生的叫伪随机数,说多了你还是不懂
|
s****b 发帖数: 2039 | 87 这个,俺的数学素养也比较差。但是俺猜想如果几个随机数当中起码有一个是无理数的
话,加起来不可能等于1;如果都是有理数的话,加起来还是有可能等于1的,对吧?
【在 v**o 的大作中提到】 : 现在码工的数学素养怎么这么逊啊 : 有限个随机数加起来还是随机数,怎么会等于1? : 随机数只有期望值,没有确定值的 : 尽管算法产生的叫伪随机数,说多了你还是不懂
|
m**********e 发帖数: 12525 | 88 我觉得你初中得重读
【在 s****b 的大作中提到】 : 这个,俺的数学素养也比较差。但是俺猜想如果几个随机数当中起码有一个是无理数的 : 话,加起来不可能等于1;如果都是有理数的话,加起来还是有可能等于1的,对吧?
|
s****b 发帖数: 2039 | 89 俺的意思是说,如果起码有一个是无理数,加起来等于1的概率就是0。如果都是有理
数,加起来等于1还是有可能的。这个可能和countable和uncountable有关。俺也不想
多说了。
【在 m**********e 的大作中提到】 : 我觉得你初中得重读
|
l*******s 发帖数: 7316 | 90 这里有一般性的有限制条件的采样方法。
http://stats.stackexchange.com/questions/30564/generating-rando
针对原LZ的问题,我来给个采样方法。
n个[0,c_n]之间的随机数 x_1,x_2,...x_n,要求x_1+x_2+...+x_n=c_n,
这n个随机数有相同的分布。
x_1+x_2+...+x_n=c_n 这个限制条件把采样空间从n维空间,变成了n-1维空间(或称为
n-1维超平面)。 假设要求采样在这n-1维空间里均匀分布。(这个假设大概最符合原
意)。
那么 y_n=x_1+x_2+...+x_(n-1) 这个在[0,c]之间随机数的概率分布应该是跟x_1+x_2
+...+x_(n-1)=y_n 在前面的n-1维超超平面上的面积呈正比。
PDF: f(y_n)= (n-1)/c_n * (y_n/c_n)^(n-2)
CDF: F(y_n)= (y_n/c_n)^(n-1)
所以在[0,1]之间均匀概率随机产生z_n,
然后由以下方法计算y_n 和 x_n
y_n=c_n*z_n^(1/(n-1))
x_n=c_n-y_n
之后问题转化为n-1个[0,c_(n-1)]之间的随机数 x_1,x_2,...x_(n-1),要求x_1+x_2+.
..+x_(n-1)=c_(n-1).其中,c_(n-1)就是前面y_n的采样结果。 |
|
|
s****b 发帖数: 2039 | 91 读你的贴太麻烦了。建议你还是用LaTEX把你的贴做成pdf格式然后做个截屏图贴上来吧。
_2
【在 l*******s 的大作中提到】 : 这里有一般性的有限制条件的采样方法。 : http://stats.stackexchange.com/questions/30564/generating-rando : 针对原LZ的问题,我来给个采样方法。 : n个[0,c_n]之间的随机数 x_1,x_2,...x_n,要求x_1+x_2+...+x_n=c_n, : 这n个随机数有相同的分布。 : x_1+x_2+...+x_n=c_n 这个限制条件把采样空间从n维空间,变成了n-1维空间(或称为 : n-1维超平面)。 假设要求采样在这n-1维空间里均匀分布。(这个假设大概最符合原 : 意)。 : 那么 y_n=x_1+x_2+...+x_(n-1) 这个在[0,c]之间随机数的概率分布应该是跟x_1+x_2 : +...+x_(n-1)=y_n 在前面的n-1维超超平面上的面积呈正比。
|
l*******s 发帖数: 7316 | 92
吧。
【在 s****b 的大作中提到】 : 读你的贴太麻烦了。建议你还是用LaTEX把你的贴做成pdf格式然后做个截屏图贴上来吧。 : : _2
|
t******g 发帖数: 4044 | 93 我可能问得抽象了点,具体问题是有一个投资组合,假设我知道了每种产品的权重,就
可以算出来整个组合的risk和return. 这样我就希望sample各种组合找出最优的risk
return的frontier。
问题是计算risk和return没有close form,所以我能想到的只能是sample10000遍,一
个个组合去算。但问题是假如最优组合是一个股票权重0.99,那这样的组合根本sample
不出来。组合内产品越多越难找出来。
乎和
【在 s****b 的大作中提到】 : 10个数的和我不知道是什么分布,但是和从0到10,分布应该是以5为中心吧,似乎和 : 是5的概率很大。上面这个程序设成 t!=5000,很快就得到答案了: : sum = 5000 : the random numbers are: 636 476 514 970 266 334 797 146 126 735 : 也就是(.636 .476 .514 .970 .266 .334 .797 .146 .126 .735), 和是5。 : 和是1的概率很小,所以跑半天还没有结果。 : 不知道你为什么一定要10个随机数的和是1,是不是要求达到必然发生事件有关? : 如果不一定要求和是1,把和往5左右凑比较方便。
|
Q***5 发帖数: 994 | 94 这种“corner solution"别人都拼了命躲避还来不及,你干嘛还必需要?
sample
【在 t******g 的大作中提到】 : 我可能问得抽象了点,具体问题是有一个投资组合,假设我知道了每种产品的权重,就 : 可以算出来整个组合的risk和return. 这样我就希望sample各种组合找出最优的risk : return的frontier。 : 问题是计算risk和return没有close form,所以我能想到的只能是sample10000遍,一 : 个个组合去算。但问题是假如最优组合是一个股票权重0.99,那这样的组合根本sample : 不出来。组合内产品越多越难找出来。 : : 乎和
|
t******g 发帖数: 4044 | 95 老兄,我不是要找十个数加起来是1,那求和然后归一就好了。但这样生成的十个数是
有bias的,很多情况是遍历不到的。
我要的一个算法能大量生成这十个数,例如生成100万组十个数,并且尽可能均匀遍历
整个空间。我也并不是一定要一个0.99,其他所有数加起来0.1,只是举个例子,很多
可能性组合是很难遍历到的。
【在 s****b 的大作中提到】 : 你不是问有没有什么好办法吗?跑下面这个程序就可以了,和是1,每个随机数乘0. : 001。我 : 跑了半天还没得到结果。你自己用快的计算机去跑吧。 : *** : import java.util.Random; : public class Haha { : public static void main(String[] args) { : Random rn = new Random(); : int t=0; : String s="";
|
t******g 发帖数: 4044 | 96 学术问题,随便问问讨论一下,军版能人多么。都不用太corner,我这是sample了一千
组十个变量,求和归一,画其中两个变量A和B的散点图,可以看到基本不会出现大于0.
3的情况,这说明任何一个变量都被约束在0到0.3之间了
【在 Q***5 的大作中提到】 : 这种“corner solution"别人都拼了命躲避还来不及,你干嘛还必需要? : : sample
|
Q***5 发帖数: 994 | 97 当维数大时,不管怎么随机取样,都会有某些区域没被扫到。就算能找到办法,能以较
大概率扫到某个权重>0.99,这也不能说明”所有可能“都扫到了。恰恰相反,人为增
加在 corner 附近的概率密度必然是以牺牲其他地方的密度为条件的,只不过“其他地
方”不象corner这么好描述罢了。
当然,作为理论问题倒是有点意思。 你对上海老姜和俺建议的,先求N次方,再归一的
办法怎么看?
0.
【在 t******g 的大作中提到】 : 学术问题,随便问问讨论一下,军版能人多么。都不用太corner,我这是sample了一千 : 组十个变量,求和归一,画其中两个变量A和B的散点图,可以看到基本不会出现大于0. : 3的情况,这说明任何一个变量都被约束在0到0.3之间了
|
l*******s 发帖数: 7316 | 98 变量大于a的概率是 (1-a)^(n-1).
n=10的时候,某个变量大于0.3的概率是4%, sample 1000组应该每个变量都有40个左右
大于0.3.
如果你的方法得不到类似的结果,可以试试我的方法。其实也很简单的。
就是在[0,1]中随机取个数,然后开9次方,得到y_10, 然后x_10=1-y_10
再在[0,1]中随机取个数,然后开8次方,再乘以y_10,得到y_9,然后x_9=y_10-y_9
再在[0,1]中随机取个数,然后开7次方,再乘以y_9,得到y_8,然后x_8=y_9-y_8
再在[0,1]中随机取个数,然后开6次方,再乘以y_8,得到y_7,然后x_7=y_8-y_7
再在[0,1]中随机取个数,然后开5次方,再乘以y_7,得到y_6,然后x_6=y_7-y_6
再在[0,1]中随机取个数,然后开4次方,再乘以y_6,得到y_5,然后x_5=y_6-y_5
再在[0,1]中随机取个数,然后开3次方,再乘以y_5,得到y_4,然后x_4=y_5-y_4
再在[0,1]中随机取个数,然后开2次方,再乘以y_4,得到y_3,然后x_3=y_4-y_3
再在[0,1]中随机取个数,然后开1次方,再乘以y_3,得到y_2,然后x_2=y_3-y_2
最后x_1=y_2
0.
【在 t******g 的大作中提到】 : 学术问题,随便问问讨论一下,军版能人多么。都不用太corner,我这是sample了一千 : 组十个变量,求和归一,画其中两个变量A和B的散点图,可以看到基本不会出现大于0. : 3的情况,这说明任何一个变量都被约束在0到0.3之间了
|
l*******s 发帖数: 7316 | 99 所以出现至少一个变量>0.99的概率大约是10*(1-0.99)^9= 1E-17.
【在 l*******s 的大作中提到】 : 变量大于a的概率是 (1-a)^(n-1). : n=10的时候,某个变量大于0.3的概率是4%, sample 1000组应该每个变量都有40个左右 : 大于0.3. : 如果你的方法得不到类似的结果,可以试试我的方法。其实也很简单的。 : 就是在[0,1]中随机取个数,然后开9次方,得到y_10, 然后x_10=1-y_10 : 再在[0,1]中随机取个数,然后开8次方,再乘以y_10,得到y_9,然后x_9=y_10-y_9 : 再在[0,1]中随机取个数,然后开7次方,再乘以y_9,得到y_8,然后x_8=y_9-y_8 : 再在[0,1]中随机取个数,然后开6次方,再乘以y_8,得到y_7,然后x_7=y_8-y_7 : 再在[0,1]中随机取个数,然后开5次方,再乘以y_7,得到y_6,然后x_6=y_7-y_6 : 再在[0,1]中随机取个数,然后开4次方,再乘以y_6,得到y_5,然后x_5=y_6-y_5
|
l*******s 发帖数: 7316 | 100 100万组很难出现0.99以上的, 能出1个0.8以上的就算运气好了。
【在 t******g 的大作中提到】 : 老兄,我不是要找十个数加起来是1,那求和然后归一就好了。但这样生成的十个数是 : 有bias的,很多情况是遍历不到的。 : 我要的一个算法能大量生成这十个数,例如生成100万组十个数,并且尽可能均匀遍历 : 整个空间。我也并不是一定要一个0.99,其他所有数加起来0.1,只是举个例子,很多 : 可能性组合是很难遍历到的。
|
|
|
s****b 发帖数: 2039 | 101 哦,原来是这样子,是要把产生的数作为权重。
sample
【在 t******g 的大作中提到】 : 我可能问得抽象了点,具体问题是有一个投资组合,假设我知道了每种产品的权重,就 : 可以算出来整个组合的risk和return. 这样我就希望sample各种组合找出最优的risk : return的frontier。 : 问题是计算risk和return没有close form,所以我能想到的只能是sample10000遍,一 : 个个组合去算。但问题是假如最优组合是一个股票权重0.99,那这样的组合根本sample : 不出来。组合内产品越多越难找出来。 : : 乎和
|
s****b 发帖数: 2039 | 102 知道了。虽然我还不是完全明白整个用途,但是我觉得既然目的是尽可能均匀遍历空间
,为啥干脆不用随机数组,直接用在空间里平均预定的数值就行了么,然后各维变量的权
重排列组合一下。边界条件需要着重分析的,就在边界附近多取几个数值。就是基本上
接近统计中的stratified+systematic sampling的方式。
【在 t******g 的大作中提到】 : 老兄,我不是要找十个数加起来是1,那求和然后归一就好了。但这样生成的十个数是 : 有bias的,很多情况是遍历不到的。 : 我要的一个算法能大量生成这十个数,例如生成100万组十个数,并且尽可能均匀遍历 : 整个空间。我也并不是一定要一个0.99,其他所有数加起来0.1,只是举个例子,很多 : 可能性组合是很难遍历到的。
|
s********l 发帖数: 439 | 103 靠,你应该早点把具体的问题说出来。你这样子当然要sample一个simplex(中文叫单
纯形)上面的均匀分布,具体做法前面已经给了,或者用N个i.i.d 指数分布做
rescaling,或者就是N-1个均匀分布排序做[0 1]之间的等分点。
你sample 10000个当然是看不到这种1个0.99,其他9个都特别小的情况的。要知道维数
越高,单纯形的一个角占总体积的比例越小。如果是10个的话这种正好在单纯形一个角
上的概率大概是10^-18这个量级。
另外return和投资组合之间总应该有一点连续性的。随机取一个点然后用BiCG或者BFGS
之类的方法去找这个点周围的局部最优。多选几个随机的出发点,找到整体最优不会太
困难,至少比你这种在高维空间做穷举法简单太多了。
sample
【在 t******g 的大作中提到】 : 我可能问得抽象了点,具体问题是有一个投资组合,假设我知道了每种产品的权重,就 : 可以算出来整个组合的risk和return. 这样我就希望sample各种组合找出最优的risk : return的frontier。 : 问题是计算risk和return没有close form,所以我能想到的只能是sample10000遍,一 : 个个组合去算。但问题是假如最优组合是一个股票权重0.99,那这样的组合根本sample : 不出来。组合内产品越多越难找出来。 : : 乎和
|
t******g 发帖数: 4044 | 104 其实当变量数量增加,已经不是某些区域扫不到的问题,而是扫来扫去都只扫某些特定
区域。我试过对随机数去对数再求负,基本上就是假设每个变量都是exponential
distribution,会好一些,能扫到0.6,0.7了
【在 Q***5 的大作中提到】 : 当维数大时,不管怎么随机取样,都会有某些区域没被扫到。就算能找到办法,能以较 : 大概率扫到某个权重>0.99,这也不能说明”所有可能“都扫到了。恰恰相反,人为增 : 加在 corner 附近的概率密度必然是以牺牲其他地方的密度为条件的,只不过“其他地 : 方”不象corner这么好描述罢了。 : 当然,作为理论问题倒是有点意思。 你对上海老姜和俺建议的,先求N次方,再归一的 : 办法怎么看? : : 0.
|
s****b 发帖数: 2039 | 105 random虽然好,但是需要遍历的时候,用systematic可能更合适吧(这里借用一下统计
术语
)。
【在 t******g 的大作中提到】 : 老兄,我不是要找十个数加起来是1,那求和然后归一就好了。但这样生成的十个数是 : 有bias的,很多情况是遍历不到的。 : 我要的一个算法能大量生成这十个数,例如生成100万组十个数,并且尽可能均匀遍历 : 整个空间。我也并不是一定要一个0.99,其他所有数加起来0.1,只是举个例子,很多 : 可能性组合是很难遍历到的。
|
t******g 发帖数: 4044 | 106 如果要遍历的话算法怎么做,复杂度是多少?
例如,十个股票,每种股票只能取整数的百分比,1%,2%,3%...,问一共有多少种组
合方式?如何穷举出来?
【在 s****b 的大作中提到】 : random虽然好,但是需要遍历的时候,用systematic可能更合适吧(这里借用一下统计 : 术语 : )。
|
s********l 发帖数: 439 | 107 你不是数学出身的吧?
最优化问题需要用穷举法去遍历的,我真的第一次见到。而且还是return对portfolio
这种连续性应该是非常好的函数。。。。。。
【在 t******g 的大作中提到】 : 如果要遍历的话算法怎么做,复杂度是多少? : 例如,十个股票,每种股票只能取整数的百分比,1%,2%,3%...,问一共有多少种组 : 合方式?如何穷举出来?
|
l*******s 发帖数: 7316 | 108 choose 9 out of 109
109!/100!/9!
【在 t******g 的大作中提到】 : 如果要遍历的话算法怎么做,复杂度是多少? : 例如,十个股票,每种股票只能取整数的百分比,1%,2%,3%...,问一共有多少种组 : 合方式?如何穷举出来?
|
s********l 发帖数: 439 | 109 你这人很有意思,水平差,又特别热心。。。。。。
10的10次方是一千万?你再算算?。。。。
【在 s****b 的大作中提到】 : random虽然好,但是需要遍历的时候,用systematic可能更合适吧(这里借用一下统计 : 术语 : )。
|
s****b 发帖数: 2039 | 110 楼主,俺忽然怀疑您是不是就是在家自己玩股票想模以一下吧,不像是职业分析 :):)
【在 t******g 的大作中提到】 : 如果要遍历的话算法怎么做,复杂度是多少? : 例如,十个股票,每种股票只能取整数的百分比,1%,2%,3%...,问一共有多少种组 : 合方式?如何穷举出来?
|
|
|
T****t 发帖数: 11162 | |
l*******s 发帖数: 7316 | 112 4.26E12
【在 t******g 的大作中提到】 : 如果要遍历的话算法怎么做,复杂度是多少? : 例如,十个股票,每种股票只能取整数的百分比,1%,2%,3%...,问一共有多少种组 : 合方式?如何穷举出来?
|
s****b 发帖数: 2039 | 113 哦,是100亿。
【在 s********l 的大作中提到】 : 你这人很有意思,水平差,又特别热心。。。。。。 : 10的10次方是一千万?你再算算?。。。。
|
l*******s 发帖数: 7316 | 114 不是10^10,
是choose 9 out of 19
=19!/10!/9!=92378
【在 s****b 的大作中提到】 : 哦,是100亿。
|
t******g 发帖数: 4044 | 115 明显不是呀,有constraint的,要十个权重加起来得1呀。怎么做穷举?
【在 s****b 的大作中提到】 : 哦,是100亿。
|
s****b 发帖数: 2039 | 116 对对我的计算是有问题,想都没想就给答案了
不过说我水平差,恐怕没有根据吧?
【在 s********l 的大作中提到】 : 你这人很有意思,水平差,又特别热心。。。。。。 : 10的10次方是一千万?你再算算?。。。。
|
s****b 发帖数: 2039 | 117 yes, yes, I made a mistake, I too quick to answered your question.
【在 t******g 的大作中提到】 : 明显不是呀,有constraint的,要十个权重加起来得1呀。怎么做穷举?
|
t******g 发帖数: 4044 | 118 你这怎么算的?如何保证十个数加起来是1的?
【在 l*******s 的大作中提到】 : 不是10^10, : 是choose 9 out of 19 : =19!/10!/9!=92378
|
s****b 发帖数: 2039 | 119 I am sorry, I forgot it has to be 1 total. :(:(
【在 l*******s 的大作中提到】 : 不是10^10, : 是choose 9 out of 19 : =19!/10!/9!=92378
|
T****t 发帖数: 11162 | 120 产生10个随机数,然后归一化吧。
就是每个随机数除以总和。
最后一个去减前面的和。 |
|
|
l*******s 发帖数: 7316 | 121 把每个数先乘以10,
这样就有10个0到10之间的整数,加起来等于10,
在把没个数加1, 就有10个1到11直间的整数,加起来等于20.
把20写成1+1+1+。。。+1, 20个1由19个加号连起来。
在这19个加号中选9个圈起来,把其9个9个圈起来的加号分开的10段表达式的值求出来,
就得到一种由10个1到11直间的整数加起来等于20。
【在 t******g 的大作中提到】 : 你这怎么算的?如何保证十个数加起来是1的?
|
n*******r 发帖数: 2010 | 122 stbmit已经讲了, 你明明看到一个正方体的塑料块,你非要跑过来和大家讲“菌斑大
神们帮我建模一个球体3d打印模型, 这个球体的体积必须是直径的三次方“。 然后菌
斑一群半吊子吭哧吭哧帮你画。
你必需把前面的十个随机分布数这个条件去掉就好了。 你不就是想遍历吗? 太简单了
, 前面有人给出答案了, 就是第一个数n1在[0,1]随机取一下, 第二个数n2在[0, 1-
n1]随机取一下, 第三个数n3在[0, 1-n1-n2]随机取一下, 依此次类推随机取到n9.
最后n1到n10再排列组合一下.
不过十维空间,你要有你家机器硬盘爆掉的可能。
sample
【在 t******g 的大作中提到】 : 我可能问得抽象了点,具体问题是有一个投资组合,假设我知道了每种产品的权重,就 : 可以算出来整个组合的risk和return. 这样我就希望sample各种组合找出最优的risk : return的frontier。 : 问题是计算risk和return没有close form,所以我能想到的只能是sample10000遍,一 : 个个组合去算。但问题是假如最优组合是一个股票权重0.99,那这样的组合根本sample : 不出来。组合内产品越多越难找出来。 : : 乎和
|
n*******r 发帖数: 2010 | 123 三维空间的simulation, 你大概要跑1million次才显得有诚意。10维的你要多少硬盘
, 你可以估计一下。
【在 n*******r 的大作中提到】 : stbmit已经讲了, 你明明看到一个正方体的塑料块,你非要跑过来和大家讲“菌斑大 : 神们帮我建模一个球体3d打印模型, 这个球体的体积必须是直径的三次方“。 然后菌 : 斑一群半吊子吭哧吭哧帮你画。 : 你必需把前面的十个随机分布数这个条件去掉就好了。 你不就是想遍历吗? 太简单了 : , 前面有人给出答案了, 就是第一个数n1在[0,1]随机取一下, 第二个数n2在[0, 1- : n1]随机取一下, 第三个数n3在[0, 1-n1-n2]随机取一下, 依此次类推随机取到n9. : 最后n1到n10再排列组合一下. : 不过十维空间,你要有你家机器硬盘爆掉的可能。 : : sample
|
l*******s 发帖数: 7316 | 124 再回复一次LZ。
这里有很多人一知半解,还喜欢忽悠。
按LZ的原贴要求,LZ的方法应该是统计界普遍采用的方法。本人是门外汉,只从网上能
找到的资料为依据。
LZ要的分布其实是Dirichlet分布的一个所有参数都为1的特例。
https://en.wikipedia.org/wiki/Dirichlet_distribution#Random_number_
generation
在wiki上给出的Dirichlet的采样方法,就是产生n各不相干的随机数,然后归一。
下面这个网页也采用相同的方法。
http://stats.stackexchange.com/questions/69210/drawing-from-dir
我在91楼给出了一个不需归一的方法,(97楼有实施步骤),其实效果跟LZ的方法是一
样的。
但是随机抽样的方法不能满足LZ的应用要求。101楼提出的每个变量取离散值,然后遍
历的方法比较能满足LZ的应用要求。
如果每个变量只{0, 0.1,0.2,...0.9,1.0}等11个值,则满足要求的样本数为92378。
113楼有公式,120楼有解释。
如果觉得不够精确,在得到的最优解附近再细化。
最后提醒LZ,有问题找买卖提唯一的学术版。
是0
【在 t******g 的大作中提到】 : 要产生十个0到1随机数加一起是1 : 我现在用的办法是分别十个随机数求和,再分别把每个随机数除以和重新scaling : 这样的问题是每个随机数都很难到达边界附近,例如一个数是0.99,其他9个数的和是0 : .01,这种情况很难产生,请问有什么好办法?多谢了
|
d*********u 发帖数: 2952 | 125
不是这么回事吧? 10个完全独立 加起来还是1,这零难度阿。
(n1...n10)
另 nx为其中最小, ny为其中最大 (n1-nx*a)/b*(ny-nx)
存在 a b 使得 sigma(ni-nx*a) =1
【在 m**********e 的大作中提到】 : 我尻! : 你们这帮文科屁民这数学功底之差,太令人震惊了 : 10个随机数,n1, n2, n3,...n10,满足n1+n2+...+n10=1,这说明这 : 里面只有9个是完全独立的, : 所以你产生9个随机数,第十个按照1-n1-n2-,.,n9产生,不就完了? : 妈的,蠢透了,连什么是独立随机变量都不懂
|