惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Hacker News: Ask HN
Hacker News: Ask HN
IT之家
IT之家
S
SegmentFault 最新的问题
T
Tailwind CSS Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 司徒正美
J
Java Code Geeks
博客园 - 聂微东
雷峰网
雷峰网
阮一峰的网络日志
阮一峰的网络日志
The Cloudflare Blog
博客园_首页
大猫的无限游戏
大猫的无限游戏
博客园 - 三生石上(FineUI控件)
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 【当耐特】
腾讯CDC
Apple Machine Learning Research
Apple Machine Learning Research
酷 壳 – CoolShell
酷 壳 – CoolShell
V
V2EX
宝玉的分享
宝玉的分享
小众软件
小众软件
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Hugging Face - Blog
Hugging Face - Blog
月光博客
月光博客
NISL@THU
NISL@THU
T
The Exploit Database - CXSecurity.com
C
CXSECURITY Database RSS Feed - CXSecurity.com
WordPress大学
WordPress大学
有赞技术团队
有赞技术团队
Blog — PlanetScale
Blog — PlanetScale
aimingoo的专栏
aimingoo的专栏
L
LINUX DO - 热门话题
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
F
Fortinet All Blogs
博客园 - Franky
L
Lohrmann on Cybersecurity
S
Secure Thoughts
量子位
V
Vulnerabilities – Threatpost
Last Week in AI
Last Week in AI
博客园 - 叶小钗
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
L
LINUX DO - 最新话题
I
InfoQ
C
CERT Recently Published Vulnerability Notes
Security Archives - TechRepublic
Security Archives - TechRepublic
P
Proofpoint News Feed
G
GRAHAM CLULEY
Cisco Talos Blog
Cisco Talos Blog

数学

居然梦见了自然数之和也是自然数的证明 - V2EX 运筹学~ - V2EX 猜不重复 4 位数,只能回答同位命中多少个,有无最快必胜办法? - V2EX 闭集 E 与一点 p(p 不属于 E)的距离是否有可能不大于 0? - V2EX 如果 X 是紧度量空间,那么连续映射 f 映入 Y 空间的 f(X)也是紧的,证明过程的一个问题! - V2EX [求助] 大数量的方程组求解( Python sympy),递归超过深度怎么解决 闭集的无穷并证明过程有逻辑断链吧? 闭区间连续函数有界的证明过程中已经找到了矛盾的区间 U(c,η),为什么后续还要找闭区间[am,bm]? - V2EX 有没有 latex 的在线版本转换工具? 闭区间连续函数有界的证明为什么都要用到数列? - V2EX 连通性推出区间的证明过程中,全称量词和存在量词是不是用错了? - V2EX 无穷大量与无界量、无界函数三者之间究竟有什么区别? 题解分享: A 有 1 块钱, B 有 10 块钱,一次赌一块钱,每次双方赢的概率都是 50%。问 A 能把 B 赢光的概率是多少? - V2EX 一道立体几何题目 - V2EX 看《概率导论》的一个例子卡住了,这个是怎么算出来的 - V2EX 请教个概率问题 - V2EX 考下 V 友的数学: 同事一起储值餐厅会员卡, 消费时遇到的一个金额平摊问题 - V2EX 一道 6-7 年级奥数题 - V2EX 请教一道我生活中想到的数学题 - V2EX 关于命题 2,我的理解是否正确? - V2EX 如果“规定”不允许包含“一切”集合的集合,那么罗素悖论还存在么? - V2EX 一个数学问题,关于 RSA 里的 e 的问题。 - V2EX 存在“非标准矩阵”么? - V2EX 如何理解:投双骰子,事件“5 出现在 7 之前”的概率是 0.4? - V2EX 零向量垂直于所有向量,同时又平行于所有向量。这不矛盾么? - V2EX 为什么建立在“错误”方程基础之上的推导,却能得出正确的双曲线方程? - V2EX 如何证明两随机变量线性组合的 V 标准差有以下不等式成立 - V2EX 究竟哪个不等式才是真正的“广义”柯西不等式? - V2EX “随机向量的线性组合”的方差可以表示为矩阵乘积,背后隐藏的数学原理是什么? - V2EX 一个有趣的数学题(机器学习 embedding 设计相关) - V2EX 大佬们,一年级数学题帮忙看下 - V2EX 数学真有意思 - V2EX 编程求解: - V2EX 求助:一道小学三年级数学题 - V2EX 问个初中几何题目,没做出来 - V2EX 什么样的 AI 函数是可训练的? - V2EX 求解一个排列组合问题 - V2EX 非线性动态系统 - V2EX 证明题!要过程(有人会吗) - V2EX 经常需要研究一些数学问题想问问现在哪个大模型最好用 - V2EX JavaScript + Canvas 解析几何画图 - V2EX 请教两平面相交的问题 - V2EX 生存函数求期望的一个疑问 - V2EX 关于方差性质应用的一个困惑 - V2EX 小学 1÷0.5x=4 中把 0.5x 看作整体是一个共识么? - V2EX mathtype 的公式 - V2EX 如何高效的**从头**自学数学? - V2EX 请教一个空间几何问题 - V2EX
请教一个抽奖的算法 - V2EX
xing393939 · 2023-11-14 · via 数学

这是一个创建于 943 天前的主题,其中的信息可能已经有所发展或是发生改变。

假设抽奖有两个奖品 A 和 B ,中奖概率都是 50%,我的实现是用随机数来确定每次抽奖中哪个,但是问题是会有误差,比如某次的抽奖统计结果是:A 被抽中 500 次,B 被抽中 471 次。产品经理认为误差有点大,他想要比较精准的概率。

我现在想实现一个绝对公平的抽奖算法,例如,第一次抽奖可以是随机的,比如中了 B ,那么第二次一定中 A ,第三次一定中 B ,循环往复。

而这种在只有两个奖品的时候,还是好实现的,问题是奖品可能是三个,四个......,中奖概率也是可以任意分配的,这样的有什么好的算法去实现吗?

第 1 条附言  ·  2023 年 11 月 14 日

  • 抽奖
  • 算法
  • 奖品
  • 概率

    15 条回复    2023-11-17 13:13:21 +08:00

    brader

    1

    brader      2023 年 11 月 14 日   ❤️ 1

    数学概率就是这样的啊,只有次数足够大的时候,概率才会比较接近。
    如果非要人为干预的话,你可以设计一个加权概率来纠偏,比如你的理想概率是 a%、b%、c%,然后你还有一个当前的实际概率 a1%、b1%、c1%,那你计算到,比如 a1%比 Z%a 小了超过一定阈值,你就给 a 这个概率加权,要细分,就分多个档次,偏的越多,加权越多

    ricwangcom

    3

    ricwangcom      2023 年 11 月 14 日

    这还需要算法?按请求顺序下发奖品不就行了[狗头],ABABABABABABABABABABABAB

    R18

    5

    R18      2023 年 11 月 14 日

    奖品总数是固定的吗?如果是这样,就生成好队列。每次都取一个出来,取到哪个是哪个。

    murmur

    6

    murmur      2023 年 11 月 14 日

    如果是公司内部抽奖,领导主动放弃参与,员工随机抽,这就是最公平的
    如果是活动对外抽奖,外人一定不会中特等奖,只能中参与奖

    哪里有绝对公平

    murmur

    7

    murmur      2023 年 11 月 14 日

    你的需求来看不像抽奖,倒像是原神的保底,如果第一次歪了第二个金一定是当期 up

    bsg1992

    8

    bsg1992      2023 年 11 月 14 日   ❤️ 1

    游戏的暴击 PRO 算法 可以参考一下,稍微改一下就能满足你这个需求

    chairuosen

    9

    chairuosen      2023 年 11 月 14 日

    count%2===0?A:B

    whosesmile

    10

    whosesmile      2023 年 11 月 14 日

    你可以设置一个奖品数组:P = [A,B,C,D],然后用随机数选取 [0 - length),选到了就将对应的奖品移除,重置 P 值

    上面是假定每个奖品只有一个,如果你有 500 个 A ,500 个 B ,类似的处理为:
    P = [{A:500}, {B:500}],每次随机 [0, length),然后将对应的奖品数 -1,当触发临界值即 0 时,同样移除,重置 PP

    whileFalse

    12

    whileFalse      2023 年 11 月 14 日 via Android

    有那么难吗...
    if random()*(a_remain + b_remain) < a_remain
    then
    a_remain --
    print("A")
    else
    b_remain --
    print("B")

    leonshaw

    13

    leonshaw      2023 年 11 月 14 日

    算出前面已经抽出的每种奖品频率,取目标概率减频率最大的那个

    sillydaddy

    15

    sillydaddy      2023 年 11 月 17 日

    @sillydaddy 我在上面的回复有点武断。

    今天又思考了一下这个问题,发现有一个很简单的方法,就是增加抽奖的次数。比如你想抽 1000 次分配给 A 和 B ,但觉得抽 1000 次的标准差(你说的误差)太大,那就可以抽 10000 次,然后用 10000 次抽奖的最终结果除以 10 。比如 10000 次里面 A 得 5050 次,B 得 4950 ,分别除以 10 ,得到 A 得 505 次,B 得 495 次。为什么举这个数字呢,因为投掷 10000 次硬币,标准差就是 50 。相比投掷 1000 次时的标准差 15 ,并不是增大到 10 倍,而是只有 3 倍左右。

    除以 10 这个操作,相当于把标准正态分布的图像在 x 轴方向上压扁了,然后在 1 个标准差内的概率就增大了。如果想实时显示抽奖过程,那就累积 A 或 B 的中奖次数,每累积到 10 次,就算作真实中奖 1 次。当抽完 10000 次,A 和 B 真实中奖总次数就是 1000 次。