最近有贴子在讨论大乐透彩票的算法,.想了一个进位的方法,比如1-9个数字选4个数字排列,就是1234排到6789,那么每个组合就是尾数累加1,只要保证各位进位的数是6789,也就是个位累加超过9向前进一位,十位累加超过8向前进一位......进位后,同时保证千位 <百倍 <十位 <个位。在网上搜索一下,VB这类算法很少,而且用递归的比较多,所以就将这个算法记录在此作个备忘吧。35选5的算法代码:
Option
Explicit

Private
Const
MaxValue
As
Long
=
35
Private
Const
MaxIndex
As
Long
=
5
Dim
Test
As
Long

Private
Sub
CarryNum(arr()
As
Long
)
Dim
Idx
As
Long
Dim
V
As
Long
V
=
MaxValue
-
MaxIndex
Idx
=
MaxIndex
Do
arr(Idx)
=
arr(Idx)
+
1
If
arr(Idx)
>
V
+
Idx
Then
Idx
=
Idx
-
1
If
Idx
=
0
Then
Test
=
-
1

本文介绍了一个用于大乐透彩票算法的M选N组合实现,通过尾数累加进位的方法确保数字顺序。作者提供了一段VB代码,演示如何在35选5的情况下生成所有可能的组合,并且提到了代码运行速度和测试情况,适用于生成不同组合的调整。
最低0.47元/天 解锁文章
5148





