【问题标题】:Finding Reccurring Number Combinations in Column of Numbers在数字列中查找重复出现的数字组合
【发布时间】:2015-09-16 07:22:33
【问题描述】:

我已经搜索并找到了类似问题的讨论和解决方案,但没有我想弄清楚的那么复杂。

我有一个访问表,它由两列 Draw Number 和 Number Drawn 组成,如下所示。抽奖号码重复 20 次,以对应每次特定抽奖中抽出的 20 个号码。

我正在尝试找出一种方法来确定 20 个号码组中所有抽奖中出现频率最高的号码组合(5 个号码)。例如,12341 出现 n x,12342 出现 nx,12343 出现 n x,等等。

我创建了参数查询,允许我搜索从 2 到 10 个数字的不同数字组合,它们可以正常工作,返回我通过简单 UI 输入的数字组合的出现次数。但目标是务实地找出数字的最佳组合。

希望这是有道理的。顺便说一句,表中有大约 3600 万行。但是 para 查询工作得很好;为每个添加的数字返回结果只需要一秒钟多的时间。所以,查询两个数字 = 2 秒等待,三个数字 = 3 秒等待,等等。

我一直在考虑某种类型的循环,但不知道如何开始?处理时间不是问题;如果需要,可能需要一天的时间!

这是用 VBA 编写的,有各种各样的查询、临时表等来完成工作。

文字是Access,标签却是MySql,是哪个? – RBarryYoung 21 小时前

这部分让我感到困惑:我试图找出一种方法来确定 20 个号码组中所有抽奖中出现频率最高的号码组合(5 个号码)。例如,12341 出现 n x,12342 出现 nx,12343 出现 n x,等等。 – 21 小时前的新消息

^五个数字是什么意思?我在您的样本数据中没有看到 12341。请使用您拥有的数据进行解释,并使用该数据给出预期结果。 – McAdam331 21 小时前

drosberg - 澄清: 感谢您的回复。它是一个 Access 应用程序,但作为第一次发布的海报 Stackoverflow 推荐标签? 五个号码是指每次抽奖中出现频率最高的五个号码组(我以五个为例,可以是 2 到 10 个号码组),其中抽奖由总共 80 个号码中的 20 个抽奖号码组成.因此,我发布的数据旨在作为示例。提供的样本只有 50、51 个共同点。我可以将 50 和 51 插入参数查询,它会告诉我这种组合出现了 60,000 次(或其他),但可能 50 和 57 出现了 65,000 次。 如果我要手动执行此操作,并假设我正在寻找最常见的 5 数字组合,我将在参数查询中输入以下内容:1,2,3,4,1 组 = 30,000 次出现 1,2,3, 4,2 组 = 31,000 次出现 1,2,3,4,3 组 = 31,050 次出现 1,2,3,4,4 组 = 29,050 次出现等等........................ ………… 但是对于可以从数字 1 到 80 派生的 5 个数字的每一个组合,我都必须这样做。我希望让程序来完成这项工作! 谢谢 不要

DRAW NUMBER NUMBER DRAWN
1   1
1   28
1   19
1   3
1   38
1   46
1   43
1   29
1   13
1   22
1   20
1   11
1   50
1   51
1   53
1   54
1   57
1   64
1   76
1   78
2   29
2   14
2   2
2   1
2   35
2   40
2   39
2   30
2   10
2   27
2   21
2   6
2   42
2   50
2   51
2   53
2   54
2   61
2   65
2   69

【问题讨论】:

  • 文字说Access,标签却说MySql,是哪个?
  • 这部分让我很困惑:I'm trying to figure a way to determine the most frequent occurring combination of numbers (5 numbers) for all of the draws in each of the 20 number sets. So for instance, 12341 occurs n x, 12342 occurs nx, 12343 occurs n x, etc.
  • ^五个数字是什么意思?我在您的示例数据中没有看到12341。请使用您拥有的数据进行解释,并使用该数据给出预期结果。
  • 大家好,只是想知道我是否可以提供任何其他信息来帮助为我提供正确方向的“指针”。弄清楚这一点并不重要,但在过去的几年里,我一直在思考这个问题。
  • 更不用说我认为我能够使用具有 36 + 百万行的 Access DB 并获得可接受的性能非常酷?

标签: mysql vba loops


【解决方案1】:

我不久前写了一篇关于使用 Excel 生成有和没有重复的排列的帖子。也许你可以使用它。

https://michiel.wordpress.com/2015/03/29/permutations-with-repetition-using-excel/

这是它的工作原理。我使用的是字符串,但您可以轻松地修改数字(因为您说需要 5)。

您可以使用 MID 函数从字符串中获取单个字符,并从中生成排列。

=MID(模式,MOD([N]/[P],长度)+1,1) N 反转到第 N 列 P 指的是水平行 (1,4,16)。您可以使用 =4^ 之类的公式生成这些。

输入代码后,您可以在 Excel 中列出所有排列,并在其旁边的单元格中生成一个您也可以从 VBA 执行的 sql 查询。

例如:Looking up Access database in Excel

或者找像http://thingiequery.com/这样的商业工具 我不知道是否有任何开源工具。

【讨论】:

  • @Artjom 我添加了一个简短的解释。
【解决方案2】:

我认为你应该考虑:

假设有 100 个球。

  1. 将表格设置为每个“绘图编号”有一行,100 列对应每个可能的数字,每列的类型为布尔值。

当您查看哪些抽奖的编号为 23 时,您只需添加一个 WHERE Column23 = true。

对于数字 23 和 56 WHERE Column23 = true AND Column56 = true

这应该会大大简化和加速您的 SQL。

  1. 您设置了一个包含所有可能数字组合的表格。 您运行 SQL 来查找计数。

哈维

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-08
    • 2016-01-17
    • 2018-06-01
    • 2013-04-25
    • 2018-01-30
    • 1970-01-01
    • 2015-06-14
    • 1970-01-01
    相关资源
    最近更新 更多