algorithm - 查找最多使用 k 次的子集

标签 algorithm

我时不时地读到所有关于基于乐透的游戏受到控制以及计算机浏览玩家选择的组合并确定未使用的子集的阴谋论。这让我开始思考——为了真正有效地确定这些子集,这种算法必须如何工作?查找未使用的数字肯定会被划掉,就像找到最少使用的一样,因为它不一定能为我们提供解决方案。此外,更深入地说,算法如何有效地选择玩家使用了 k 次的子集?更正式地说:

We are given a set of 50 numbers 1 to 50. In the draw 6 numbers are picked.

INPUT: m subsets each consisting of 6 distinct numbers 1 to 50 each, integer k (0<=k) being the maximum players having all of their 6 numbers correct.

OUTPUT: Subsets which make not more than k players win the jackpot ('winning' means all the numbers they chose were picked in the draw).

在悲观的情况下,是否有任何有效的算法可以在不使用太字节硬盘存储所有可能的 50!/(44!*6!) 的情况下进行计算?老实说,我想不出有什么。

最佳答案

如果我要运行这样的阴谋,我首先会获得玩家提交的列表。然后我会生成随机的彩票选择,看看每个这样的选择会产生多少中奖者。然后选择对我最有吸引力的随机抽奖选择。做任何更复杂的事情都没有意义,因为它可能已经足够强大,足以被静态分析人员注意到。

如果你想破坏彩票,选择一些你喜欢的竞争对手并让他们中奖可能会更容易也更安全。在(书)“1984”中,我认为国家只是宣布了想象中的彩票中奖者,每个地区的公告都在宣布该地区以外的人。 Margery Allingham 在“The Beckoning Lady”中的一个想法是,一个团伙试图建立一个赛马场,这样他们就可以操纵比赛,让他们能够将贿赂伪装成奖金。

关于algorithm - 查找最多使用 k 次的子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9639046/

相关文章:

algorithm - 什么是最容易实现的线性回归算法?

java - 找到打开所有灯泡的最少开关数

javascript - 如何使用 TDD 在 Javascript 中编写闰年算法?

c++如何从 vector 中找到总和为给定数字的元素的最小数量

algorithm - 从非常大的集合中生成看似随机排列而不重复的有效方法?

java - 如何在不访问每个节点的情况下计算完整二叉树中的节点数?

php - 合并两个数组以使整数值尽可能接近相等

c++ - 判断两棵树是否同构

java - Java 中的字符数组迭代 - 改进算法

algorithm - 将数组转换为中位数数组