用于创建唯一宾果面的算法

时间:2010-01-21 23:11:01

标签: c# .net algorithm

有谁知道可以生成独特的宾果卡面的算法?我想在C#中实现这个算法。

谢谢,

3 个答案:

答案 0 :(得分:4)

获得5组,每组包含15个数字(第1组为1-15,第2组为16-30 ......)
在1,2,4,5中设置5个不同的数字 在第3组中选择4个不同的数字

检查该卡是否已存在 检查每张现有卡的左上角是否与新卡相对应 如果两个数字相等,则移至第二个数字
如果你在同一个地方得到相同数字的24倍,那么两张卡都是相同的,必须拒绝新卡

答案 1 :(得分:0)

这是一个有趣的问题,但正如迈克尔·马德森所报告的那样,考虑到可能性的数量,你可能会更好地随机生成它们并且 之后,检查你是否有重复。 (除非您想要生成所有111个千万亿次的可能性,我希望您有数据存储空间!)

答案 2 :(得分:0)

这是一个用于生成给定范围内的整数的随机子集的函数,您可能会发现它很有用:

private static IEnumerable<int> RandomSubsetOfRange(int min, int max, int count)
{
    Random random = new Random();

    int size = max - min + 1;
    for (int i = 0; i <= size; i += 1)
    {
        if (random.NextDouble() <= ((float)count / (float)(size - i + 1)))
        {
            yield return min + i;
            count -= 1;
        }
    }
}