生成的组合

本文关键字:组合 | 更新日期: 2023-09-27 18:02:26

最近我一直在读关于彩票轮盘和组合生成的文章。我想我应该试一试,并寻找一些示例代码。我设法拼凑了一个数字轮基于一些VB,但我引入了一个有趣的错误,而移植它。http://www.xtremevbtalk.com/showthread.php?t=168296

它允许你识别任何组合。你给它N个数字,K个选择和一个索引它就会按字典顺序返回那个组合。它在低数值时运行良好,但随着球的数量(N)的增加,我将获得额外的数字。40个球,2个球。组合780返回40和41!我添加的选择和数字越多,这个值越高,它似乎发生在运行结束时,前面的数字是由于循环。

我发现在VB论坛上生成可能组合数量的方法没有多大意义,所以我找到了一个更简单的方法:http://www.dreamincode.net/code/snippet2334.htm然后我发现,使用双精度似乎导致缺乏分辨率。使用长可以,但现在我不能使用更大的N值因为乘法长时间超出了范围!然后我尝试了ulong和decimal,它们都不能超过26-28个数字(N)。所以我回到了VB网站上的版本。http://www.xtremevbtalk.com/showthread.php?s=6548354125cb4f312fc555dd0864853e& t = 129902

该代码是一种避免触及96位上限的方法,并声称能够计算高达n98, k49。由于某些原因,我无法使它正常工作,它吐出一些非常奇怪的数字。

放弃了一段时间后,我决定重新阅读维基建议。虽然大部分都是我无法理解的,但我发现某些计算二项式系数的方法是不准确的。这并不适用于你需要拨号(转轮)进入游戏的系统。经过一番搜索和阅读,我发现了这个:http://dmitrybrant.com/2008/04/29/binomial-coefficients-stirling-numbers-csharp

原来这正是我正在寻找的信息!第一种方法是准确的,对我做的任何事情来说都足够快了。非常感谢精神病去加入的麻烦只是在这里发帖!

生成的组合

从一组40个数字中生成2个数字的恰好780个组合。如果组合生成器使用从零开始的索引,那么任何>=最大组合数量的索引都是无效的。您可以使用二项式系数来确定可以形成的组合的数量。