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

牛角尖之-随机

  •  
  •   leaveeel · 84 天前 · 1304 次点击
    这是一个创建于 84 天前的主题,其中的信息可能已经有所发展或是发生改变。
    今天知乎看到个灭霸和手套的回答后有点钻牛角尖了,一直在想随机是如何执行的,比如随机删除 50%

    假设有 1-100 共 100 个不同的数字,随机删除的 50 个是如何被选中的。是从 1 开始“轮询”是否被删除还是同时返回 50 个被删除的序号?

    如果是从 1 开始按 50%概率判断是否删除,运气足够好前 50 个都没有被删,那后 50 个必然被删。从整体来看概率是 50%,从个体看对后 50 个并不公平,他们没有参与的机会直接“被分配”了

    如果是同时返回 50 个序号删除也存在同样的问题,因为要保证不重复,每个序号被选中的几率趋势优先到后是 50/100-( 49/99 、50/99 )-( 48/98 、49/98 、50/98 )……最终整体来看还是 50%,而对个体而言是不同的。

    所以对个体而言是不是不存在绝对公平的随机,只能保证从整体看的相对公平?
    18 条回复    2025-05-13 16:27:26 +08:00
    wyntalgeer
        1
    wyntalgeer  
       84 天前
    算法都是伪随机,上帝不掷骰子
    cmdOptionKana
        2
    cmdOptionKana  
       84 天前
    你问的大致可分为两个问题:
    1. 具体怎样执行随机的问题,答案是看你想怎样设计,不同的设计有不同的效果满足不同的需求。
    2. 个体与随机的问题,随机通常与概率有关,而概率通常需要大样本才有意义。个体、或者少次数、小样本,不适用一般意义的“随机”概念。
    cmdOptionKana
        3
    cmdOptionKana  
       84 天前
    @wyntalgeer 在 2022 诺贝尔奖之后,就不要说“上帝不掷骰子”了。

    “上帝不掷骰子”是爱因斯坦说的,随后爱因斯坦的头号粉丝贝尔提出了“贝尔不等式”,原本目的是为了证明爱因斯坦正确。但结果反而证明了爱因斯坦错误,随后几十年科学界不断提高实验精度,无一例外每次实验都证明“上帝掷骰子”,最终 2022 年诺贝尔奖向全世界宣布这个早已被彻底证明的结果:上帝掷骰子,现实世界是真随机。
    particlec
        4
    particlec  
       84 天前
    我在想如果 不知道总体数量,如何做到 50%的概率,如何知道是不是 50%的概率
    Rickkkkkkk
        5
    Rickkkkkkk  
       84 天前
    公平的算法是,每次随机选一个,选满 50 个。
    leaveeel
        6
    leaveeel  
    OP
       84 天前 via Android
    @cmdOptionKana 在工作中的随机大都是用 random 并不会考虑其他的,这个问题并不是想设计什么算法,我在想的是从大样本中个体的视角来看随机、概率的“公平”。有点乱不知道大家能不能理解
    leaveeel
        7
    leaveeel  
    OP
       84 天前 via Android
    @Rickkkkkkk 那就是抓阄了,在个体而言每次抓取都是独立事件,越往后被抓的概率越低,对抓的人来说这 50 次是同一个事件,概率就是 50%
    leaveeel
        8
    leaveeel  
    OP
       84 天前 via Android
    @particlec 如果说的是手套,他都能随便许愿了可以视为全能的上帝视角,自然知道总数。如果不知道的话就分区吧。不知道全部的一个星球总知道,每个星球取一半。
    如果完全混沌状态那就只能每个个体单独判断,这样可能不是精确的 50 %,但也因为不精确,导致每个个体都参与了,对个体而言却是公平的
    leaveeel
        9
    leaveeel  
    OP
       84 天前 via Android
    @leaveeel 7# 勘误 应该是越往后被抓概率越高
    wyntalgeer
        10
    wyntalgeer  
       84 天前
    @cmdOptionKana #3 那你解释一下小牛掷硬币状元签
    InDom
        11
    InDom  
       84 天前
    只需要隔一个刪一个就可以了.

    至于如何排序, 你怎么排序都可以.

    你按姓名排序, 按坐标位置扫描排序, 按出生时间顺序, 都可以.

    反正 在足够大的数据面前, 总能找到一些近乎随机的排序.

    所有偶数位的直接 kill, 至于为什么是你, 你想想为啥处于队列中的偶数位上吧.
    atuocn
        12
    atuocn  
       84 天前
    每个球下面放一个管子,管子有 50%是通的。左手随机摆放球,右手随机摆放管子。左右互博,双盲。然后打个响指,球一起下落,筛选通过管子的球。
    litchinn
        13
    litchinn  
       84 天前
    > 从个体看对后 50 个并不公平
    这里就不对了,如果你真的将个体剥离开单独看的话,那就不存在条件概率了,也就是说这数自己“看不到”前面的数被删了多少,它只知道自己会有 50%的概率被删除,所以还是公平的

    > 每个序号被选中的几率趋势优先到后是 50/100-( 49/99 、50/99 )-( 48/98 、49/98 、50/98
    > 运气足够好前 50 个都没有被删,那后 50 个必然被删
    这两句本身就是从整体角度考虑的,你不能在这个角度再说只考虑个体的情况下不公平
    iawes
        14
    iawes  
       84 天前
    随机是对整体而言的,对个体来说没什么区别,况且哪个个体消失对灭霸来说都一样的,大公无私
    iawes
        15
    iawes  
       84 天前
    只要消失一半就行了,哪一半无所谓
    xz410236056
        16
    xz410236056  
       84 天前
    @wyntalgeer #1 通过使用物理层面的真随机+无偏算法你就能得到指定的真随机数。比如使用 https://www.random.org/ 大气噪声指数,或使用 CPU 内置的 TRNG+Fisher-Yates 算法
    xz410236056
        17
    xz410236056  
       84 天前
    因为你所设计的并不是真随机。。

    1 、预先生成有序序列,再使用随机洗牌算法(无偏真随机)打乱顺序,取前 50 个。
    2 、动态排除,维护一个候选池,每次取完后移除。
    xz410236056
        18
    xz410236056  
       84 天前
    @leaveeel #7 你这就是没学好数学了。。。你混淆了混淆抽样方式与概率计算。在抽取后不放回的每个个体被选中的概率都是 50%
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2893 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 14:38 · PVG 22:38 · LAX 07:38 · JFK 10:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.