怎样正确地将 1 升水随机分成 3 份 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要回答技术问题时复制粘贴 AI 生成的内容
qinjiannet
V2EX    程序员

怎样正确地将 1 升水随机分成 3 份

  •  
  •   qinjiannet 2016-11-14 21:48:54 +08:00 8290 次点击
    这是一个创建于 3252 天前的主题,其中的信息可能已经有所发展或是发生改变。
    之前一直认为将 1 升水随机分成3份应该这样操作:

    第 1 份,从 1 升水中取出 X 升, X 是[0, 1]之间的随机数

    第 2 份,从剩下的水中取出 Y 升, Y 是[0, 1 - X]之间的随机数

    第 3 份,剩余的水为 1 - X - Y

    但实际上这样并不等同于“随机分成3份”

    (惊讶脸)

    正确的做法貌似是这样的:

    第 1 份,从 1 升水中取出 X 升, X 是[0, 1]之间的随机数

    第 2 份,从 1 升水中取出 Y 升, Y 是[0, 1]之间的随机数,若X + Y > 1,则从第1步重新开始

    第 3 份,剩余的水为 1 - X - Y
    第 1 条附言    2016-11-14 22:33:59 +08:00
    如果将题面换成:

    在长度为一米的木棒上任取两点将木棒分成三段

    “任取两点”的定义是否明确?
    第 2 条附言    2016-11-14 23:53:36 +08:00
    第一种分配方法 3 份水的期望是: 1/2 , 1/4 , 1/4

    第二种分配方法 3 份水的期望是: 1/3 , 1/3 , 1/3
    第 3 条附言    2016-11-15 14:31:33 +08:00
    受小伙伴回答的启发,新增了这个贴子: t/320661
    57 条回复    2016-11-16 00:00:08 +08:00
    banixc
        1
    banixc  
       2016-11-14 22:04:43 +08:00   1
    所以什么叫做“随机分成 3 份”。
    这里“随机”的定义是什么?
    DiamondbacK
        2
    DiamondbacK  
       2016-11-14 22:05:59 +08:00   5
    正确的做法是:
    先给出「随机分成 3 份」的操作性定义,再执行这个操作。

    概率论民科的一大原罪就是越过定义讨论问题。
    参考「贝特朗悖论」。
    cgcs
        3
    cgcs  
       2016-11-14 22:08:33 +08:00   2
    恩,照一般逻辑理解:

    随机生成三个[0,1]之间的随机数, A,B,C

    SUM = A + B + C

    第一份水 = A/SUM (升)
    第二份水 = B/SUM (升)
    第三份水 = C/SUM (升)
    Quaintjade
        4
    Quaintjade  
       2016-11-14 22:09:21 +08:00   1
    不是很喜欢“从第 1 步重新开始”这种做法,因为总有倒霉蛋会重复好多次,次数的方差比较大。

    抛开水这个比方,其实就是随机三分线段。更好得做法应该是,若 X+Y<=1 ,则三份水为{X,Y,1-X-Y};否则{1-X,1-Y,X+Y-1}。
    murmur
        5
    murmur  
       2016-11-14 22:21:11 +08:00
    闭着眼睛扬出去两瓢就完了
    binux
        6
    binux  
       2016-11-14 22:23:41 +08:00
    拿 3 个大盆放地上,站三楼,把水浇下去
    qinjiannet
        7
    qinjiannet  
    OP
       2016-11-14 22:30:03 +08:00
    @Quaintjade 感谢,学到了一种新方法!
    qinjiannet
        8
    qinjiannet  
    OP
       2016-11-14 22:34:40 +08:00
    @banixc @DiamondbacK 新增了一条附言:

    如果将题面换成:

    在长度为一米的木棒上任取两点将木棒分成三段

    “任取两点”的定义是否明确?
    Herobs
        9
    Herobs  
       2016-11-14 22:34:44 +08:00
    取 3 个 [0-] 随机数 X , Y , Z , SUM = X + Y + Z

    结果就是 X / SUM, Y / SUM, Z / SUM
    Herobs
        10
    Herobs  
       2016-11-14 22:35:54 +08:00
    发现和 #3 一样。。。
    NeinChn
        11
    NeinChn  
       2016-11-14 22:38:16 +08:00   1
    结果是 X / SUM, Y / SUM, Z / SUM 的需要优化一下
    浮点数都是有误差的
    所以应该是 X / SUM, Y / SUM , SUM - X / SUM - Y / SUM
    否则加起来不是 SUM
    murmur
        12
    murmur  
       2016-11-14 22:42:19 +08:00
    @NeinChn 与其优化你的浮点数不如找点无残留的理想容器
    menc
        13
    menc  
       2016-11-14 22:57:36 +08:00   1
    你们光说不行啊,要给出形式化的证明啊,证明期望符合每桶各 1/3 的水
    @cgcs
    @Quaintjade
    @qinjiannet
    murmur
        14
    murmur  
       2016-11-14 23:00:46 +08:00
    @menc 你这题面自始至终就没提到过 1/3 这个问题 而且按自然的说法大量的事件统计起来应该印象中是泊松分布?

    没人告诉你期望是 1/3 如果要 1/3 的随机数题面要给明的
    lecher
        15
    lecher  
       2016-11-14 23:06:57 +08:00
    简化问题不过是线段内任取两点即可。
    直接取两个[0-1]随机数, A1 、 A2
    则 0-1 之间的距离自然就会被 A1 、 A2 分成三段,并且 A1 、 A2 满足题目要求的随机性。

    剩下的就是, A1 、 A2 排个序,假设 A2 是大数,然后第二份的数量是|A2-A1|, 第三份的数量是 1-A2
    lecher
        16
    lecher  
       2016-11-14 23:13:35 +08:00
    简化成图片大致就是这个样子。
    A1 、 A2 为线段上面的两个随机数,且 A2>A1 。
    最终计算出来的三份线段长度就可以满足题目要求的随机性: A1 、 A2-A1 、 1-A2

    0-----------A1-------------------A2------------------1
    |<--A1--->|<---(A2-A1)--->|<---(1-A2)---->|
    banixc
        17
    banixc  
       2016-11-14 23:18:17 +08:00
    @qinjiannet 如果换成木棒的说法,那这个题目的回答应该是这样:
    第一步:取 0 < x ,y < 1
    第二步:第一份水为 x' = min(x,y) 第二份为 y'= abs(x-y) 第三份为 1-x'-y'
    目前我还没有想到如何证明这种取法和原本的取法是等效的。
    murmur
        18
    murmur  
       2016-11-14 23:19:15 +08:00
    好吧,喷了半天我才明白楼主要的点是什么
    ( 1 )作为理工科,严谨性是第一的,在自然界均匀分布并不是那么好找的,反倒是什么泊松分布了,高斯分布了比较好找,如果是真人倒水的话,第一下绝大多数我认为会选择 1/2 以下,因为倒太多了第二次倒什么啊,理想容器这些情况也不能少,高中都知道的东西怎么在网上提问就忘了呢?
    ( 2 )你可以去翻翻概率论的书,这个题实际上是给定 x 的分布求 f(x)的分布(特么我也不确定了),所以说如果你不给定你“随机”的方式,没人保证最后的期望是 1/3 ,所以说高等数学有用啊,大学无用论这不就看出来么,按照你的要求,我认为 A/(A+B+C),其中 A 、 B 、 C 都是均匀分布反倒是最靠谱的答案,虽然这个也需要数学证明
    Quaintjade
        19
    Quaintjade  
       2016-11-14 23:24:34 +08:00
    @qinjiannet
    “在线段上随机取一点”一般不会有歧义,通常默认为连续均匀分布的概率。
    “在线段上任取两点”通常默认为取两点是相互独立的。

    但请注意以上只是习惯上默认,严格来说你应该用数学语言限定“随机”这个概念,否则就像 2 楼提到的「贝特朗悖论」那样,“在圆上随机取弦”就会导致歧义。
    Quaintjade
        20
    Quaintjade  
       2016-11-14 23:31:37 +08:00   1
    @banixc 去问折棒太郎
    qinjiannet
        21
    qinjiannet  
    OP
       2016-11-14 23:55:32 +08:00
    @murmur 第二种分配方法的期望的确是 1/3 , 1/3 , 1/3
    ProkillerJ
        22
    ProkillerJ  
       2016-11-15 00:07:39 +08:00 via iPhone
    蒙提霍尔悖论?
    Quaintjade
        23
    Quaintjade  
       2016-11-15 00:09:10 +08:00
    DiamondbacK
        24
    DiamondbacK  
       2016-11-15 00:18:57 +08:00   1
    @qinjiannet
    「任意」和「随机」的含义是不同的。
    在概率论中,「随机取样」和「随机样本」惯例上蕴含「等概率」条件,但「任意」这个词没有任何关于随机变量的分布函数的信息。

    总之,问题在于应当先给出操作性定义或者分布函数,然后再计算。
    但是「怎样正确地将 1 升水随机分成 3 份」这个问题的表述,其实是在问「什么样的分布 /操作才算是将 1 升水随机分成 3 份?」,这是在要求为一个未定义的操作给出定义。
    如果还有后续问题,在某种定义基础上可以得出确定性答案的问题,比如问「将 1 升水随机分成 3 份,那么每一份的容积服从什么分布?」那么可以通过补充定义来修正这个问题。
    如果没有后续问题,即这句话已经是问题的本身 /全部,那这就是个死胡同,是个语言陷阱。
    abcsuperman
        25
    abcsuperman  
       2016-11-15 02:10:16 +08:00 via Android
    楼上正解。
    v9ox
        26
    v9ox  
       2016-11-15 02:13:42 +08:00
    同 3 楼 9 楼

    直接生成 3 个[0,1]随机数, 然后除以三.

    提需求的人如果说不行, 再根据需求变更方案.
    tyrealgray
        27
    tyrealgray  
       2016-11-15 06:37:51 +08:00
    不应该是拿三个盆子,两根管子,然后用连通器原理吸上个两口就可以搞定了么?????
    yidinghe
        28
    yidinghe  
       2016-11-15 07:43:47 +08:00 via Android
    随机分成 N 份的意思可以理解为 0 和 1 之间出现随机不重复的 N-1 个数字。
    shierji
        29
    shierji  
       2016-11-15 07:59:08 +08:00 via Android
    我考虑过 这个其实就是微信红包问题
    powergx
        30
    powergx  
       2016-11-15 08:02:17 +08:00
    生成两个 0-1 的随机数 a 和 b, 第一份 = a, 第二份=b ,第三份 = 1-a-b
    9hills
        31
    9hills  
       2016-11-15 08:28:27 +08:00 via iPhone
    把水搅拌下,然后三等分。水分子随机进入三份中
    qian19876025
        32
    qian19876025  
       2016-11-15 08:49:03 +08:00
    额为嘛不是 1 先从 一升水的杯子里面 倒出 X 得到 第一个杯子 1-x 第二个杯子 x
    2 再分别从 第一个杯子和第二个杯子 倒出 一些 给第三个 杯子呢 然后 就有了
    第一个杯子 1-x -Y1 第二个杯子 里面 x -Y2 第三个杯子 Y1+ Y2
    qian19876025
        33
    qian19876025  
       2016-11-15 08:57:21 +08:00
    @tyrealgray 这方法额 学习了 不过好像杯子的容积 不好控制 但是比较容易操作 谢谢学习了
    Quaintjade
        34
    Quaintjade  
       2016-11-15 09:51:10 +08:00
    @qian19876025
    这样做的话,凭直觉判断,第一第二个杯子的期望是 0.25 升,第三个杯子的期望是 0.5 升
    SuujonH
        35
    SuujonH  
       2016-11-15 09:56:25 +08:00
    你这期望居然是给定的...

    r1 = SUM/3 + random
    r2 = SUM/3 + random
    r3 = SUM - r1 - r2

    把 random 定小一点?
    xcatliu
        36
    xcatliu  
       2016-11-15 09:57:46 +08:00 via iPhone
    如果随机的含义是,期望应该为 1/3 ,那么仍然有无数种分配方式。
    akstrom
        37
    akstrom  
       2016-11-15 10:11:33 +08:00
    不是应该吗?如果要求都不为 0,就如下(所谓随机,只能是 1 跟 2 是随机,3 是被逼的...............)
    1.x=rand(1,8);
    2.10-x=y;rand(1,y-1);
    3.10-x-y
    angusdwhite
        38
    angusdwhite  
       2016-11-15 11:09:45 +08:00
    @SuujonH random 期望是 0 就可以了
    RqPS6rhmP3Nyn3Tm
        39
    RqPS6rhmP3Nyn3Tm  
       2016-11-15 11:09:47 +08:00 via iPad
    给一个尺度,强行普朗克常数好了,然后 combination 一下就能算出概率
    qian19876025
        40
    qian19876025  
       2016-11-15 12:26:53 +08:00
    @Quaintjade 额 我感觉这保证了 随机性
    angusdwhite
        41
    angusdwhite  
       2016-11-15 12:56:55 +08:00
    X >= 0; Y >= 0; X + Y <= 1;

    给出此区域上的一个分布,不就完了吗。这样的分布很多的,所以三杯水的期望不确定。
    joying
        42
    joying  
       2016-11-15 13:36:47 +08:00
    生成一个[0,1]的随机数 X ,再生成一个[0,1]的随机数 Y',这样三份水就是: X , Y=Y'*(1-X), Z=1-X-Y
    joying
        43
    joying  
       2016-11-15 13:40:07 +08:00
    @joying 不对,这样似乎也是 1/2 , 1/4 , 1/4 。还是三楼的解法比较好,楼主的解法有需要重复的可能,感觉有点蛋疼。
    waytoexplorer
        44
    waytoexplorer  
       2016-11-15 13:54:33 +08:00 via iPhone
    零到一取两个随机数, a < b ,三份水就是, a , b-a , 1-a-b 。这样似乎就没问题了吧?
    cxl008
        45
    cxl008  
       2016-11-15 14:19:43 +08:00
    抽签问题呢? 按顺序抽 每个人概率不是一样么。。。。
    angusdwhite
        46
    angusdwhite  
       2016-11-15 14:38:58 +08:00
    @cxl008 不一样,这是连续模型,概率空间都不一样
    menc
        47
    menc  
       2016-11-15 15:46:53 +08:00
    @murmur 随机的定义是要等可能的,要服从均匀分布,不要钦定一个大自然常见的分布
    murmur
        48
    murmur  
       2016-11-15 15:53:47 +08:00
    @menc 不要钦定均匀分布哈 random 这个词从来就没有均匀的定义
    abcsuperman
        49
    abcsuperman  
       2016-11-15 15:57:43 +08:00 via Android
    随机的定义是要等可能的。。。高斯分布都偏到姥姥家了…不过话说回来,要是大自然绝大部分服从均匀分布…太惨烈了…被淘汰掉的哗哗的…
    murmur
        50
    murmur  
       2016-11-15 16:07:58 +08:00
    @abcsuperman 如果随机的定义是等可能,就不会有随机过程这本书了
    不要拿一般去拼理论好么。。概率这是个严谨的东西,论坛上最容易撕的就是概率和物理,而且物理比这简单的多,一个浮力就能撕出几百楼来
    概率你还得上条件概率
    CloudnuY
        51
    CloudnuY  
       2016-11-15 17:00:09 +08:00
    问题等于:怎样将一份红包随机分为(发放个数)份?……
    Quaintjade
        52
    Quaintjade  
       2016-11-15 17:01:48 +08:00
    @murmur
    居然有人认为 1 升水能浮起 2 公斤木头,容我做个 doge 的表情
    ZRS
        53
    ZRS  
       2016-11-15 20:08:09 +08:00
    @Quaintjade 我是
    Hieast
        54
    Hieast  
       2016-11-15 20:38:06 +08:00
    @lecher 这个思路最简单
    henneko
        55
    henneko  
       2016-11-15 21:10:40 +08:00 via iPhone
    1/2*1/3+1/4*2/3=1/3
    Adven
        56
    Adven  
       2016-11-15 22:29:43 +08:00
    随机生成三个随机数 x1,x2,x3,然后取 x1/( x1+x2+x3 )、 x2/( x1+x2+x3 )、 x3/( x1+x2+x3 )不可以么?
    abcsuperman
        57
    abcsuperman  
       2016-11-16 00:00:08 +08:00 via Android
    @murmur 你说的对…我是说楼上的大哥 对随机理解有问题
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5485 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 08:32 PVG 16:32 LAX 01:32 JFK 04:32
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86