一个M选N的组合算法

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    最近有贴子在讨论大乐透彩票的算法,.想了一个进位的方法,比如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
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值