【发布时间】:2011-05-04 13:07:10
【问题描述】:
我正在编写一个生成宾果卡号的程序。宾果卡由 5 列组成,每列 4 个数字。第一列只能包含数字 1-8,第二列只能包含数字 9-16,依此类推(最多 40 个)。
所以在数据库中,我所做的是为此我有两个表。第一个表用于列号。每列包含一组唯一的数字(每列 70 组,即 8 取 4 的组合)。对于 5 列,我将有 350 套。第二张表是卡号。这由 5 列组成,每列对应 B、I、N、G、O 的行。总共有 1,680,700,000。此表的可能组合。我这样做是因为每个游戏的每张卡片都是重复的,只有卡片的控制编号是唯一的。
我想跟踪每个开奖号码的中奖卡。我需要尽可能快地进行跟踪,因为这里谈论的是数百万张卡片。我想到了 2 个选项:
首先,检查每个抽出的号码是否存在于卡片上,从而最小化每次抽出的牌池。
其次,为每个数字(1-40)关联一个唯一的素数,将它们相乘并将乘积与列相关联(我称之为素数索引)。每列的 5 个素数索引相乘,乘积与每个卡片/组合(我称之为卡片索引)相关联。当一个数字被抽出时,相关的素数会从卡片索引中分离出来,检查抽出的数字是否是卡片索引的一个因素。每次连续抽奖都会减少卡片索引(对于池中的每张卡片),因此如果存在获胜卡片,则减少为 1。我将使用 MySQL 和 Java。这两种技术中哪一种是更快的方法?我也会考虑内存空间、负载等,但对我来说更重要的是跟踪的速度。非常感谢!
附:抱歉,解释太长了。我只是想澄清一些事情。 :D
【问题讨论】:
标签: java mysql performance combinations