昨天微信的一道面试题,求解

发布于 2022-09-11 18:11:34 字数 142 浏览 8 评论 0

题目是: 有A B C D 4个候选元素,2个元素展示位。写一个推荐程序,每一次选择2个不同的元素去展示。要求多次推荐后,A B C D推荐次数出现的比例趋近4:3:2:1。元素出现越随机越好。

注意是两个不同的元素。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

岁月染过的梦 2022-09-18 18:11:34

P(X1 X2)为出现组合X1,X2的概率
则有:
P(AB) + P(AC) + P(AD) = 4/10
P(AB) + P(BC) + P(BD) = 3/10
P(AC) + P(BC) + P(CD) = 2/10
P(AD) + P(BD) + P(CD) = 1/10
且 0 <= P(x) <= 1
为了满足越随机越好可以以最小化方差为目标进行求解。

注:最小化方差时不是线性规划问题。可以考虑用如粒子群优化等算法来求解。

我是男神闪亮亮 2022-09-18 18:11:34

分别准备5个概率表,一个四抽一的概率表和四个三抽一的概率表。

四抽一的概率分别是4:3:2:1。
三抽一分四种情况:

  • 第一次抽到的是D,则剩下ABC,它们的概率为4:3:2
  • 第一次抽到的是C,则剩下ABD,它们的概率是4:3:1
  • 后面两个同理

抽取的时候分两次,第一次先从四抽一里面抽一个,第二次从对应的三抽一里面抽一个。

思念满溢 2022-09-18 18:11:34

用 Excel 凑了个数字,方程不会解 @_@
图片描述
用程序跑了验证了一下
图片描述


以下回答,不正确

从抽一个元素开始,4:3:2:1 最简单的一种方案:

// 从以下数组随机抽取一个元素,概率就是 4:3:2:1
let pool = [A,A,A,A,B,B,B,C,C,D]

抽2个元素

// 抽第一个元素,抽取池如下
let pool = [A,A,A,A,B,B,B,C,C,D];
// 抽第二个元素
// 假设 第一个元素 item 抽出的是 A,那么剩下的 B:C:D 要 3:2:1,所以抽取池应该是 [B,B,B,C,C,D]
// 抽取的是其他元素类推
if(item === A)
    pool2 = [B,B,B,C,C,D]
else if(item === B)
    pool2 = [A,A,A,A,C,C,D]
else if(item === C)
    pool2 = [A,A,A,A,B,B,B,D]
else if(item === D)
    pool2 = [A,A,A,A,B,B,B,C,C]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文