h******e 发帖数: 9616 | 1 【 以下文字转载自 Military 讨论区 】
发信人: threepig (), 信区: Military
标 题: 万能的军版求问个数学问题
发信站: BBS 未名空间站 (Wed Sep 30 15:25:46 2015, 美东)
要产生十个0到1随机数加一起是1
我现在用的办法是分别十个随机数求和,再分别把每个随机数除以和重新scaling
这样的问题是每个随机数都很难到达边界附近,例如一个数是0.99,其他9个数的和是0
.01,这种情况很难产生,请问有什么好办法?多谢了 |
k*******a 发帖数: 772 | |
h******e 发帖数: 9616 | 3 现在数学题人家都跑去问菌斑了,术版是否要反省反省? |
c******n 发帖数: 16666 | 4 难道是机器人啊 都没昵称
这个问题还没考虑到rounding的情况
上次我做一个数据可视化 杂七杂八处理计算然后rounding然后要保证合可以到100%的
时候
就傻眼了。。
后来一查
居然还是个正儿八经的数学问题
几个解法都挺麻烦的
我就随便hack了。。rounding之后算超出多少 或者缺了多少
平均分一下 从最后一个数字 每人加一份。。
是0
【在 h******e 的大作中提到】 : 现在数学题人家都跑去问菌斑了,术版是否要反省反省?
|
i****e 发帖数: 642 | 5 a = rand(10,1); % only first will be kept
for i=2:9, a(i) = rand * (1-sum(a(1:i-1))); end
a(10) = 1 - sum(a(1:9)); % avoid rounding problem
a = randsample(a); % shuffle
【在 c******n 的大作中提到】 : 难道是机器人啊 都没昵称 : 这个问题还没考虑到rounding的情况 : 上次我做一个数据可视化 杂七杂八处理计算然后rounding然后要保证合可以到100%的 : 时候 : 就傻眼了。。 : 后来一查 : 居然还是个正儿八经的数学问题 : 几个解法都挺麻烦的 : 我就随便hack了。。rounding之后算超出多少 或者缺了多少 : 平均分一下 从最后一个数字 每人加一份。。
|
h******e 发帖数: 9616 | 6 下面这个思路何如?
做一个函数可以从N到M之间取任意值的。
然后从0开始。
从0到1取任意值。结果假定叫x1.答案里面加入 y1 = x1 - 0.
然后从x1到1取任意值x2,答案里面加入 y2 = x2 - x1.
然后从x2到1取任意值x3,答案里面加入 y3 = x3 - x2.
就这样循环一直取到x9,y9.
最后 y10 = 1 - y9. |
P******a 发帖数: 1379 | 7 这个明显不随机嘛
【在 h******e 的大作中提到】 : 下面这个思路何如? : 做一个函数可以从N到M之间取任意值的。 : 然后从0开始。 : 从0到1取任意值。结果假定叫x1.答案里面加入 y1 = x1 - 0. : 然后从x1到1取任意值x2,答案里面加入 y2 = x2 - x1. : 然后从x2到1取任意值x3,答案里面加入 y3 = x3 - x2. : 就这样循环一直取到x9,y9. : 最后 y10 = 1 - y9.
|
h******e 发帖数: 9616 | 8 那个函数就是随机的嘛……
【在 P******a 的大作中提到】 : 这个明显不随机嘛
|
d********f 发帖数: 43471 | 9 不要求uniform很容易啊,你可以分段随机,或者挨个随机,最后凑一个和就结了。如
果要uniform的话,只能这么干
http://stackoverflow.com/questions/8064629/random-numbers-that-
是0
【在 h******e 的大作中提到】 : 那个函数就是随机的嘛……
|
P******a 发帖数: 1379 | 10 你这个算法,x1的期望值是0.5, x2的期望值是0.25,以此类推,这不算随机吧。我理
解每个随机数的期望值应当是0.1
【在 h******e 的大作中提到】 : 那个函数就是随机的嘛……
|
|
|
d********f 发帖数: 43471 | 11 要求uniform分布就是错的
【在 P******a 的大作中提到】 : 你这个算法,x1的期望值是0.5, x2的期望值是0.25,以此类推,这不算随机吧。我理 : 解每个随机数的期望值应当是0.1
|
k**l 发帖数: 2966 | 12 你最后随机打乱一下,每个数都有1/10 可能性是第一个,不就都 0.1 了
当然这一步没必要,只是方便理解
【在 P******a 的大作中提到】 : 你这个算法,x1的期望值是0.5, x2的期望值是0.25,以此类推,这不算随机吧。我理 : 解每个随机数的期望值应当是0.1
|
P******a 发帖数: 1379 | 13 我记得编程语言提供的随机函数一般都假设均匀分布啊,如果不要求均匀分布,那要求
里应当明确提出来,缺省都是均匀发布
【在 d********f 的大作中提到】 : 要求uniform分布就是错的
|
c******n 发帖数: 16666 | 14 你这个和我说的也差不多
不过我那个是有正常数值的 关键是弄完之后数值不能太离谱
理论上差额要均分给最容易造成插值的
但是这又要排序
已经一堆计算了 所以我最后差额随机分以下 从最后一个数字 每个数字加一点
【在 i****e 的大作中提到】 : a = rand(10,1); % only first will be kept : for i=2:9, a(i) = rand * (1-sum(a(1:i-1))); end : a(10) = 1 - sum(a(1:9)); % avoid rounding problem : a = randsample(a); % shuffle
|
P******a 发帖数: 1379 | 15 期望值为0.1只是必要条件,你随机打乱满足了期望值这个必要条件,但还不是均匀分
布意义上的随机
【在 k**l 的大作中提到】 : 你最后随机打乱一下,每个数都有1/10 可能性是第一个,不就都 0.1 了 : 当然这一步没必要,只是方便理解
|
k**l 发帖数: 2966 | 16 随机就是均匀分布啊,这样10个随机数里面最大的那个当然不会在0-1之间均匀分布
这个简化成3个数就是一个二维(正三角形)平面上的均匀分布的一个点
博导贴的 stack overflow 上有表象的证明
【在 P******a 的大作中提到】 : 期望值为0.1只是必要条件,你随机打乱满足了期望值这个必要条件,但还不是均匀分 : 布意义上的随机
|
c*****y 发帖数: 542 | 17 Uniform个头。勃导你还是去做你很有前途的右臂去把。
[发表自未名空间手机版 - m.mitbbs.com]
【在 d********f 的大作中提到】 : 不要求uniform很容易啊,你可以分段随机,或者挨个随机,最后凑一个和就结了。如 : 果要uniform的话,只能这么干 : http://stackoverflow.com/questions/8064629/random-numbers-that- : : 是0
|
s***r 发帖数: 783 | 18 我还以为你在转笑话呢,正准备评价这笑话没水平理解不了
【在 h******e 的大作中提到】 : 现在数学题人家都跑去问菌斑了,术版是否要反省反省?
|
l*******s 发帖数: 7316 | |
c*****y 发帖数: 542 | 20 Let me elaborate a bit (to show that I'm not trolling here). Sorry it's
easier to type in English on this machine.
1. No solution exists for generating 10 uniform AND independent number which
sum up to 1. This is clear.
2. No solution exists for generating 10 uniform random numbers, each having
MARGINAL U(0,1) distributions and summing up to 1. Why? Assuming we have X1,
...,X10, satisfying:
X1~U(0,1), ..., X10~U(0,1)
X1+...+X10=1
However:
E(X1+..+X10)=E(X1)+E(X2)+...+E(X10)=0.5*10=5.
So, we cannot have 10 random variables, each having MARGINAL U(0,1)
distribution, but still sum up to 10.
3. We COULD generate N RVs, with each following MARGINAL U(a,b)
distribution
, and summing up to 1. You'll need (b-a)=2/N, though. All you need to do is
to
apply a lot of conditioning. You can try N=3 case which is not that complex.
[发表自未名空间手机版 - m.mitbbs.com]
【在 c*****y 的大作中提到】 : Uniform个头。勃导你还是去做你很有前途的右臂去把。 : : [发表自未名空间手机版 - m.mitbbs.com]
|
|
|
c*****y 发帖数: 542 | 21 Since 10 is an even number it's not that hard:
X1=U(0,0.2)
X2=0.2-X1
...
X9=U(0,0.2)
X10=0.2-X9
which
having
X1,
[发表自未名空间手机版 - m.mitbbs.com]
【在 c*****y 的大作中提到】 : Let me elaborate a bit (to show that I'm not trolling here). Sorry it's : easier to type in English on this machine. : 1. No solution exists for generating 10 uniform AND independent number which : sum up to 1. This is clear. : 2. No solution exists for generating 10 uniform random numbers, each having : MARGINAL U(0,1) distributions and summing up to 1. Why? Assuming we have X1, : ...,X10, satisfying: : X1~U(0,1), ..., X10~U(0,1) : X1+...+X10=1 : However:
|
l*******s 发帖数: 7316 | |
h******e 发帖数: 9616 | |
S*****e 发帖数: 6676 | 24
正态分布?
【在 h******e 的大作中提到】 : 不懂你们说的“分布均匀”是什么意思。。。
|
l*******s 发帖数: 7316 | 25
【在 l*******s 的大作中提到】 : 这里有一般性的有限制条件的采样方法。 : http://stats.stackexchange.com/questions/30564/generating-rando : 针对原LZ的问题,我来给个采样方法。 : 见附图
|
h******e 发帖数: 9616 | 26
维基了一下,实在没看懂。
【在 S*****e 的大作中提到】 : : 正态分布?
|
d********f 发帖数: 43471 | 27 兄弟你是不是只上了statistical inference ,还没上stochastic process?
【在 c*****y 的大作中提到】 : Since 10 is an even number it's not that hard: : X1=U(0,0.2) : X2=0.2-X1 : ... : X9=U(0,0.2) : X10=0.2-X9 : : which : having : X1,
|
S*****e 发帖数: 6676 | 28
俺实在不记得随机过程学啥了。。。
【在 d********f 的大作中提到】 : 兄弟你是不是只上了statistical inference ,还没上stochastic process?
|
S*****e 发帖数: 6676 | 29
看下那个分布图就差不多知道了,数学公式都是用来湖人的。。。
【在 h******e 的大作中提到】 : : 维基了一下,实在没看懂。
|
c*****y 发帖数: 542 | 30 hehe...来点干货,勃导。兄弟我吃这碗饭的。
学了个新名词叫stochastic process原来就可以出来虎人了。呵呵。扯名词有什么意义
呢。这个问题和随机过程有半毛钱的关系么?
【在 d********f 的大作中提到】 : 兄弟你是不是只上了statistical inference ,还没上stochastic process?
|
|
|
z*****n 发帖数: 7639 | 31 马尔可夫
【在 S*****e 的大作中提到】 : : 看下那个分布图就差不多知道了,数学公式都是用来湖人的。。。
|
K*****2 发帖数: 9308 | 32 用Dirichlet分布不就行了么,完全不用动脑子。
原post要想搞出接近1的随机数,搞个小参数不就完事了么。 |
K*****2 发帖数: 9308 | 33 x1咋取的,这样x1,x2,...,xn能保证exchangeable吗
【在 l*******s 的大作中提到】
|
K*****2 发帖数: 9308 | 34 可以用levy process来normalize,哈哈
【在 c*****y 的大作中提到】 : hehe...来点干货,勃导。兄弟我吃这碗饭的。 : 学了个新名词叫stochastic process原来就可以出来虎人了。呵呵。扯名词有什么意义 : 呢。这个问题和随机过程有半毛钱的关系么?
|
l*******s 发帖数: 7316 | 35 x1=y2,
能保证exchangeable.
【在 K*****2 的大作中提到】 : x1咋取的,这样x1,x2,...,xn能保证exchangeable吗
|
K*****2 发帖数: 9308 | 36 啊,是的,这样产生的就是参数全1的Dirichlet咯
【在 l*******s 的大作中提到】 : x1=y2, : 能保证exchangeable.
|
l*******s 发帖数: 7316 | 37 没学过,自己琢磨的。 刚google了一下Dirichlet distribution,应该跟参数全1的
Dirichlet一样吧。
【在 K*****2 的大作中提到】 : 啊,是的,这样产生的就是参数全1的Dirichlet咯
|
K*****2 发帖数: 9308 | 38 赞!
【在 l*******s 的大作中提到】 : 没学过,自己琢磨的。 刚google了一下Dirichlet distribution,应该跟参数全1的 : Dirichlet一样吧。
|
l*******s 发帖数: 7316 | |
K*****2 发帖数: 9308 | 40 是的,如果是从一般的dirichlet抽样就是搞gamma variables然后normalize
不过人们也可以继续问,怎么产生gamma随机数,尤其是alpha不是整数的,这个问题很
不trivial…… 比如原lz要的那种接近1的效果的,把alpha搞成靠近0的小数就可以,
那些也不是很容易
https://en.wikipedia.org/wiki/Gamma_distribution#Generating_gamma-
distributed_random_variables
【在 l*******s 的大作中提到】 : 网上找到的方法跟原LZ的归一方法一样。所以说我提出的方法,其实跟归一方法效果一 : 样。 : 要是这样的话,还不如直接sample n个数,再归一,简单多了。 : http://stats.stackexchange.com/questions/69210/drawing-from-dir : https://en.wikipedia.org/wiki/Dirichlet_distribution#Random_number_ : generation
|