V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
darasion
V2EX  ›  问与答

一个概率发生器产生 1 的概率为 p ,产生 0 的概率为 1-p ,用这个概率发生器做一个产生 1 和 0 的概率分别为 0.5 的概率发生器。

  •  
  •   darasion · 2011-04-08 15:55:13 +08:00 · 5382 次点击
    这是一个创建于 4960 天前的主题,其中的信息可能已经有所发展或是发生改变。
    11 条回复    1970-01-01 08:00:00 +08:00
    vayn
        1
    vayn  
       2011-04-08 16:09:15 +08:00
    想到个土办法, 随机生成 1-10, 选到前5个输出 0,选到后 5 个生成 1
    vayn
        2
    vayn  
       2011-04-08 16:11:24 +08:00
    random.choice([0, 1]) 可行否?
    Kymair
        3
    Kymair  
       2011-04-08 16:21:13 +08:00
    跑两次,如果结果是00或11就重新再来跑两次,直到结果是01或10为止。01则返回0,10则返回1
    Kymair
        4
    Kymair  
       2011-04-08 16:22:52 +08:00
    .. 500 error
    看来发帖时碰到500要谨慎重发
    olive1
        5
    olive1  
       2011-04-08 16:25:39 +08:00
    if(p>(1-p)){
    p-x=0.5;
    1-p+x=0.5;
    }else{
    p+x=0.5;
    1-p-x=0.5;
    }
    raptium
        6
    raptium  
       2011-04-08 16:34:23 +08:00
    看到第一句話讓我想起上個學期拿了 C+ 的 Information Theory ...
    話說 @Kymair 的答案就是正確答案吧 貌似在哪兒看過了~~
    darasion
        7
    darasion  
    OP
       2011-04-08 16:42:26 +08:00
    @raptium 嗯嗯。算了一下 @Kymair 的办法是结果是正确的。
    这是一道面试题,可惜我当时没想到还能让一个东西跑很多次很多次。总以为那样会浪费。一紧张就没答上。。

    @vayn 土办法不行啊,条件限制要用给定的发生器。

    @olive1 没看懂。
    vayn
        8
    vayn  
       2011-04-08 16:49:55 +08:00
    @darasion random.choice([0, 1]) 跑得次数足够多,0 和 1 出现的概率也是各 1/2,这个想法来自于投硬币。不过前提是 choice 得是真随机。

    @Kymair 的方法我好像也见过,不错
    9hills
        9
    9hills  
       2011-04-08 16:58:22 +08:00
    原来如此,p(1-p) = (1-p)p
    没想到
    aligo
        10
    aligo  
       2011-04-08 18:59:03 +08:00
    @Kymair 的方法问题就在于可以永远的投下去,所以没办法得出结果,无法证明其概率是否相等,于情于理都有点怪异XD

    但是解决实际问题倒是够了
    9hills
        11
    9hills  
       2011-04-08 19:56:55 +08:00
    @aligo 可以证明啊,连续投两次为11的概率为p*p,10是p*(1-p),01是(1-p)*p,00为(1-p)*(1-p)

    由于抛出11和00后就放弃重抛,10和01的概率明显相等。
    最笨的证明用无穷级数的办法做---
    Kymair
        12
    Kymair  
       2011-04-09 00:21:13 +08:00
    跑两次,如果结果是00或11就重新再跑两次,直到结果是01或10为止。01就返回0,10就返回1
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1102 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 18:48 · PVG 02:48 · LAX 10:48 · JFK 13:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.