杭州个人小客车摇号百分之百中签率所需要的时间预测和阶梯摇号概率提升

简介: 杭州个人小客车摇号百分之百中签率所需要的时间预测和阶梯摇号概率提升

2018年7月31日,杭州第一次车牌阶梯摇号落下帷幕,各种准确的数据进行了详细公布,咱们可以更准确的对像我这样运气不佳久摇不中的人进行摇号预测了。可以看到第一次第一阶梯的阶梯摇号的概率相当于普通摇号概率的近十倍。基准中签率:0.624670% ,基准时间:2018年-7月,阶梯摇号指标:10000个, 达到两年(一个阶梯摇号指标)阶梯摇号的人数:167357,两年阶梯摇号的中签概率:5.423493%,达到四年(两个阶梯摇号指标)阶梯摇号的人数:17026,四年阶梯摇号的中签概率:10.846987%。

开始实际的阶梯摇号中签率和我的当时的算法基本一致,不过随着参加阶梯摇号的大军增加,中签概率逐渐降低,到了2021年1月已经接近最开始的中签概率一半了。这主要是样本基数的增加引起的,也出现了72次摇号三指标的情况。下面的算法作为参考还是有一定的意义的。

作为老码农,当看到杭州开始个人小客车开始阶梯摇号的通知,忍耐不住想计算一下,我们久摇不中的人阶梯摇号增加了多少倍中签概率,以当前中签概率,至少多少年才能保证有百分之百的中签概率。是不是我们程序猿的思维和大家的思维不一样,是不是觉得我们满脑子是数据和统计学的概率?我们没有问题吧!

以2018年7月个人摇号标准中签率为0.62467%,参与七月个人阶梯摇号的有效申请编码总数184383个;摇号基数总数为201409个,其中:第一阶梯的有167357个,第二阶梯的有34052个(17026人,因为它们一个人有2两个阶梯摇号基数)。一年有两次阶梯摇号,每两年增加一次阶梯摇号基数。现在假设以后都按照这个数据来预测,你何时能够有百分之百概率中签(这个是统计学的问题,不排除有的人一次就摇到号了,不能排除那个倒霉蛋达到200%的中签还在奋力拼搏,不过正常的中签概率达到100%都能中签的)。杭州首次摇号时间是2014年5月,截止到今天(2018年8月1日),最早的一批人摇号了四年零三个月(不包括8月还没有摇号开奖的),下面看看你还需要奋斗多少年。

参照以2018年7月个人摇号标准中签率为标准计算的数据如下:

基准中签率:0.006247 ,基准时间:2018年-7月,阶梯摇号指标:10000, 达到两年阶梯摇号的人数:167357,两年阶梯摇号的中签概率:0.054235,达到四年阶梯摇号的人数:17026,四年阶梯摇号的中签概率:0.108470

可见两年阶梯摇号一次(阶梯摇号包括单独阶梯摇号和普通摇号 5.4235%+0.62467%)的概率是普通一摇号(0.62467%)的9.68倍,一年两次阶梯摇号相当于一年额外增加约17次普通摇号。

若现在各个中签率变可以计算出何时能百分之百中签。下面以我2016年8月开始摇号(截止到2018年6月正好进行23期摇号)为计算的例子,我中间没有中断过摇号。下面是以今天2018年7月的数据参数为基准,计算出来的数据:

预计最迟中签时间 2022年-7月,总摇号有效次数:72, 摇号时间:72月 距离预计最迟中签时间还剩下(月):48月, 距离预计最迟中签时间还剩下(年):4.000000年

总中签率:105.913069%,开始时间:2016年-8月

基准中签率:0.624670% ,基准时间:2018年-7月,阶梯摇号指标:10000, 达到两年阶梯摇号的人数:167357,两年阶梯摇号的中签概率:5.423493%,达到四年阶梯摇号的人数:17026:105.913069%,开始时间:2016年-8月

基准中签率:0.624670% ,基准时间:2018年-7月,阶梯摇号指标:10000, 达到两年阶梯摇号的人数:167357,两年阶梯摇号的中签概率:5.423493%,达到四年阶梯摇号的人数:17026\357,四年阶梯摇号的中签概率:10.846987%, 无效效摇号次数:0。

可以看到我最快4年才能保证百分之百中签,我刚好赶上第一期阶梯摇号,这个是最理想的情况,由于新的参加摇号人员的增加,有更多的人进入4年或6年摇号阶梯摇号,这些都导致最迟百分之百概率中签的时间增加,只是增加的不是很离谱的程度,必定只是预测。

下面以我同事2016年2月(截止到2018年7月正好进行30期摇号)摇号为计算的例子,我中间没有中断过摇号。下面是以今天2018年7月为统计,计算出来的数据:

预计最迟中签时间 2022年-7月,总摇号有效次数:78, 摇号时间:78月 距离预计最迟中签时间还剩下(月):48月, 距离预计最迟中签时间还剩下(年):4.000000年

总中签率:116.760056%,开始时间:2016年-2月

基准中签率:0.624670% ,基准时间:2018年-7月,阶梯摇号指标:10000, 达到两年阶梯摇号的人数:167357,两年阶梯摇号的中签概率:5.423493%,达到四年阶梯摇号的人数:17026,四年阶梯摇号的中签概率:10.846987%, 无效效摇号次数:0。

下面是以今天(2018年7月并且包含本月)开始预测,从开始摇号到2018年7月(当前时间的月份,注意从当月摇号发布到月底的时间也认为是当月还没有开始,因为摇号有时有推迟这个时间算不准)开始摇号的人开始摇号时间及预计中签时间,所需要的月对照表(可以看到当正好处于阶梯开始后一个月参加摇号比其它时间要早几个月,我就时这个幸运时间开始摇号的):

2018-08-01 15:04:12.423269+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2014年-5月,  中签时间 2021年-7月, 摇号时间:87月 剩下(月):36月
2018-08-01 15:04:12.423632+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2014年-6月,  中签时间 2021年-7月, 摇号时间:86月 剩下(月):36月
2018-08-01 15:04:12.423802+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2014年-7月,  中签时间 2021年-7月, 摇号时间:85月 剩下(月):36月
2018-08-01 15:04:12.423959+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2014年-8月,  中签时间 2021年-7月, 摇号时间:84月 剩下(月):36月
2018-08-01 15:04:12.424143+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2014年-9月,  中签时间 2021年-10月, 摇号时间:86月 剩下(月):39月
2018-08-01 15:04:12.424558+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2014年-10月,  中签时间 2021年-10月, 摇号时间:85月 剩下(月):39月
2018-08-01 15:04:12.425157+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2014年-11月,  中签时间 2021年-10月, 摇号时间:84月 剩下(月):39月
2018-08-01 15:04:12.425327+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2014年-12月,  中签时间 2021年-10月, 摇号时间:83月 剩下(月):39月
2018-08-01 15:04:12.425625+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2015年-1月,  中签时间 2021年-10月, 摇号时间:82月 剩下(月):39月
2018-08-01 15:04:12.425784+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2015年-2月,  中签时间 2021年-10月, 摇号时间:81月 剩下(月):39月
2018-08-01 15:04:12.425992+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2015年-3月,  中签时间 2022年-1月, 摇号时间:83月 剩下(月):42月
2018-08-01 15:04:12.426141+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2015年-4月,  中签时间 2022年-1月, 摇号时间:82月 剩下(月):42月
2018-08-01 15:04:12.426288+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2015年-5月,  中签时间 2022年-1月, 摇号时间:81月 剩下(月):42月
2018-08-01 15:04:12.426434+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2015年-6月,  中签时间 2022年-1月, 摇号时间:80月 剩下(月):42月
2018-08-01 15:04:12.427379+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2015年-7月,  中签时间 2022年-1月, 摇号时间:79月 剩下(月):42月
2018-08-01 15:04:12.427599+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2015年-8月,  中签时间 2022年-1月, 摇号时间:78月 剩下(月):42月
2018-08-01 15:04:12.428009+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2015年-9月,  中签时间 2022年-7月, 摇号时间:83月 剩下(月):48月
2018-08-01 15:04:12.428161+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2015年-10月,  中签时间 2022年-7月, 摇号时间:82月 剩下(月):48月
2018-08-01 15:04:12.428310+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2015年-11月,  中签时间 2022年-7月, 摇号时间:81月 剩下(月):48月
2018-08-01 15:04:12.428757+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2015年-12月,  中签时间 2022年-7月, 摇号时间:80月 剩下(月):48月
2018-08-01 15:04:12.428909+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2016年-1月,  中签时间 2022年-7月, 摇号时间:79始摇号时间 2015年-12月,  中签时间 2022年-7月, 摇号时间:80月 剩下(月):48月
2018-08-01 15:04:12.428909+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2016年-1月,  中签时间 2022年-7月, 摇号时间:79\346月 剩下(月):48月
2018-08-01 15:04:12.429389+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2016年-2月,  中签时间 2022年-7月, 摇号时间:78月 剩下(月):48月
2018-08-01 15:04:12.429538+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2016年-3月,  中签时间 2022年-7月, 摇号时间:77月 剩下(月):48月
2018-08-01 15:04:12.429685+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2016年-4月,  中签时间 2022年-7月, 摇号时间:76月 剩下(月):48月
2018-08-01 15:04:12.429831+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2016年-5月,  中签时间 2022年-7月, 摇号时间:75月 剩下(月):48月
2018-08-01 15:04:12.429977+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2016年-6月,  中签时间 2022年-7月, 摇号时间:74月 剩下(月):48月
2018-08-01 15:04:12.430123+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2016年-7月,  中签时间 2022年-7月, 摇号时间:73月 剩下(月):48月
2018-08-01 15:04:12.430529+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2016年-8月,  中签时间 2022年-7月, 摇号时间:72月 剩下(月):48月
2018-08-01 15:04:12.430760+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2016年-9月,  中签时间 2023年-1月, 摇号时间:77月 剩下(月):54月
2018-08-01 15:04:12.430910+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2016年-10月,  中签时间 2023年-1月, 摇号时间:76月 剩下(月):54月
2018-08-01 15:04:12.431056+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2016年-11月,  中签时间 2023年-1月, 摇号时间:75月 剩下(月):54月
2018-08-01 15:04:12.431202+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2016年-12月,  中签时间 2023年-1月, 摇号时间:74月 剩下(月):54月
2018-08-01 15:04:12.431385+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2017年-1月,  中签时间 2023年-1月, 摇号时间:73月 剩下(月):54月
2018-08-01 15:04:12.432877+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2017年-2月,  中签时间 2023年-1月, 摇号时间:72月 剩下(月):54月
2018-08-01 15:04:12.433043+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2017年-3月,  中签时间 2023年-3月, 摇号时间:73月 剩下(月):56月
2018-08-01 15:04:12.433190+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2017年-4月,  中签时间 2023年-3月, 摇号时间:72月 剩下(月):56月
2018-08-01 15:04:12.433338+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2017年-5月,  中签时间 2023年-3月, 摇号时间:71月 剩下(月):56月
2018-08-01 15:04:12.433483+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2017年-6月,  中签时间 2023年-3月, 摇号时间:70月 剩下(月):56月
2018-08-01 15:04:12.433628+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2017年-7月,  中签时间 2023年-3月, 摇号时间:69月 剩下(月):56月
2018-08-01 15:04:12.433955+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2017年-8月,  中签时间 2023年-3月, 摇号时间:68月 剩下(月):56月
2018-08-01 15:04:12.434103+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2017年-9月,  中签时间 2023年-7月, 摇号时间:71月 剩下(月):60月
2018-08-01 15:04:12.434249+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2017年-10月,  中签时间 2023年-7月, 摇号时间:70月 剩下(月):60月
2018-08-01 15:04:12.434395+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2017年-11月,  中签时间 2023年-7月, 摇号时间:69月 剩下(月):60月
2018-08-01 15:04:12.434542+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2017年-12月,  中签时间 2023年-7月, 摇号时间:68月 剩下(月):60月
2018-08-01 15:04:12.434895+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2018年-1月,  中签时间 2023年-7月, 摇号时间:67月 剩下(月):60月
2018-08-01 15:04:12.435043+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2018年-2月,  中签时间 2023年-7月, 摇号时间:66月 剩下(月):60月
2018-08-01 15:04:12.435290+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2018年-3月,  中签时间 2024年-1月, 摇号时间:71月 剩下(月):66月
2018-08-01 15:04:12.435457+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2018年-4月,  中签时间 2024年-1月, 摇号时间:70月 剩下(月):66月
2018-08-01 15:04:12.435605+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2018年-5月,  中签时间 2024年-1月, 摇号时间:69月 剩下(月):66月
2018-08-01 15:04:12.435753+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2018年-6月,  中签时间 2024年-1月, 摇号时间:68月 剩下(月):66月
2018-08-01 15:04:12.436097+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2018年-7月,  中签时间 2024年-1月, 摇号时间:67月 剩下(月):66月
2018-08-01 15:04:12.436247+0800 ArtEnjoymentWeChatAuction[36276:3164213] 开始摇号时间 2018年-8月,  中签时间 2024年-1月, 摇号时间:66月 剩下(月):66月

下面是指定开始摇号日期(可以通过修改前面的数据来根据具体参数和指定开始摇号日期进行重新计算),以当前月份(包括当月)开始统计自己的中签概率和预计百分之百中签的各种数据,有条件的可以自己修改参数自己重新计算,本程序以objective-c语言写的程序,当然你也可以转成自己的语言,只需要把获取当前时间的代码修改下就可以了,其它都是比较通用的语句,我尽量少设计语言本身的变量类型:

-(void)statisticsSigningRate1
{
    int       year                             = 2018;          //中签率基准年
    int       month                            = 7;             //中签率基准年
    double    signingRate                      = 0.0062467;        //中签率基准年
    long long towYearPersonNumber              = 167357;        //两年没有中签遗留人数
    long long fourYearPersonNumber             = 17026;         //四年没有中签遗留人数
    long long sixYearPersonNumber              = 0;
    long long eightYearPersonNumber            = 0;
    long long tenYearPersonNumber              = 0;
    long long twelveYearPersonNumber           = 0;
    long long fourteenYearPersonNumber         = 0;
    int startYear                              = 2016;          //本人开始摇号的年
    int startMonth                             = 8;             //本人开始摇号的月
    int leakTimer                              = 0;             //从开始摇号开始审核失效的摇号次数
    long long ladderShakingConfigurationNumber = 10000;         //一次阶梯摇号的指标
    
    
    int shakingStartYear                       = 2014;          //杭州摇号第一期摇号的年,固定值不要修改
    int shakingStartMonth                      = 5;             //杭州摇号第一期摇号的月,固定值不要修改
    
    int ladderShakingStartYear                 = 2018;          //杭州阶梯摇号第一期摇号的年,固定值不要修改
    int ladderShakingStartMonth                = 7;             //杭州阶梯摇号第一期摇号的月,固定值不要修改
    
    
    if(leakTimer < 0)
    {
        leakTimer = abs(leakTimer);
    }
    
    //防止除数为0
    if(towYearPersonNumber <= 0)
    {
        towYearPersonNumber = 167357;
    }
    if(fourYearPersonNumber <= 0)
    {
        fourYearPersonNumber = 17026;
    }
    
    long long nowTime = (long long)([[NSDate date] timeIntervalSince1970]);
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateStyle:NSDateFormatterMediumStyle];
    [formatter setTimeStyle:NSDateFormatterShortStyle];
    [formatter setDateFormat:@"yyyy"];
    NSDate *confromTimesp = [NSDate dateWithTimeIntervalSince1970:nowTime];
    int nowYear = [[formatter stringFromDate:confromTimesp] intValue];
    
    NSDateFormatter *monthFormatter = [[NSDateFormatter alloc] init];
    [monthFormatter setDateStyle:NSDateFormatterMediumStyle];
    [monthFormatter setTimeStyle:NSDateFormatterShortStyle];
    [monthFormatter setDateFormat:@"MM"];
    NSDate *monthFormatterConfromTimesp = [NSDate dateWithTimeIntervalSince1970:nowTime];
    int nowMonth = [[monthFormatter stringFromDate:monthFormatterConfromTimesp] intValue];
    
    if(0 == startYear)
    {
        startYear = nowYear;
        startMonth = nowMonth;
        leakTimer = 0;
    }
    BOOL findSigningRate = NO;
    double calculationSigningRate = 0.0;
    int timerCount = 0;
    int remainderTimerCount = 0;
    double yearPersonNumber = 0;
    BOOL isFirstMonth = YES;
    double yearPersonNumberTemp = (towYearPersonNumber - fourYearPersonNumber - sixYearPersonNumber - eightYearPersonNumber - tenYearPersonNumber - twelveYearPersonNumber - fourteenYearPersonNumber) + (fourYearPersonNumber - sixYearPersonNumber - eightYearPersonNumber - tenYearPersonNumber - twelveYearPersonNumber - fourteenYearPersonNumber)*2 + (sixYearPersonNumber - eightYearPersonNumber - tenYearPersonNumber - twelveYearPersonNumber - fourteenYearPersonNumber)*3 + (eightYearPersonNumber- tenYearPersonNumber - twelveYearPersonNumber - fourteenYearPersonNumber) *4 + (tenYearPersonNumber - twelveYearPersonNumber - fourteenYearPersonNumber)*5 + (twelveYearPersonNumber - fourteenYearPersonNumber) *6 + fourteenYearPersonNumber*7;
    
    yearPersonNumber = yearPersonNumberTemp;
    for(int indexYear = shakingStartYear; !findSigningRate; indexYear++)
    {
        int indexMonth = 1;
        if(isFirstMonth)
        {
            indexMonth = shakingStartMonth;
            isFirstMonth = NO;
        }
        for(; !findSigningRate && (indexMonth <= 12); indexMonth++)
        {
            if(indexYear > startYear)
            {
                timerCount++;
            }
            else if((indexYear == startYear) && (indexMonth >= startMonth))
            {
                timerCount++;
            }
            
            if((indexYear > nowYear) || ((indexYear == nowYear) && (indexMonth >= nowMonth)))
            {
                remainderTimerCount++;
                yearPersonNumber = yearPersonNumberTemp;
                if((indexYear == 2020) && (indexMonth == 8))
                {
                    NSLog(@"test");
                }
                if(((indexYear > ladderShakingStartYear) || ((indexYear == ladderShakingStartYear) && (indexMonth >= ladderShakingStartMonth))) && ((7 == indexMonth) || (1 == indexMonth)))
                {
                    if(timerCount - leakTimer < 24)
                    {
                        calculationSigningRate = calculationSigningRate + signingRate;
                    }
                    else if(timerCount - leakTimer < 24 * 2)
                    {
                        calculationSigningRate = calculationSigningRate + signingRate;
                        if(ladderShakingConfigurationNumber > 0)
                        {
                            yearPersonNumber = ladderShakingConfigurationNumber / yearPersonNumber;
                            calculationSigningRate = calculationSigningRate + yearPersonNumber;
                        }
                    }
                    else if(timerCount - leakTimer < 24 * 3)
                    {
                        calculationSigningRate = calculationSigningRate + signingRate;
                        if(ladderShakingConfigurationNumber > 0)
                        {
                            yearPersonNumber = 2*ladderShakingConfigurationNumber / yearPersonNumber;
                            calculationSigningRate = calculationSigningRate + yearPersonNumber;
                        }
                    }
                    else if(timerCount - leakTimer < 24 * 4)
                    {
                        calculationSigningRate = calculationSigningRate + signingRate;
                        if(ladderShakingConfigurationNumber > 0)
                        {
                            yearPersonNumber = 3*ladderShakingConfigurationNumber / yearPersonNumber;
                            calculationSigningRate = calculationSigningRate + yearPersonNumber;
                        }
                    }
                    else if(timerCount - leakTimer < 24 * 5)
                    {
                        calculationSigningRate = calculationSigningRate + signingRate;
                        if(ladderShakingConfigurationNumber > 0)
                        {
                            yearPersonNumber = 4*ladderShakingConfigurationNumber / yearPersonNumber;
                            calculationSigningRate = calculationSigningRate + yearPersonNumber;
                        }
                    }
                    else if(timerCount - leakTimer < 24 * 6)
                    {
                        calculationSigningRate = calculationSigningRate + signingRate;
                        if(ladderShakingConfigurationNumber > 0)
                        {
                            yearPersonNumber = 5*ladderShakingConfigurationNumber / yearPersonNumber;
                            calculationSigningRate = calculationSigningRate + yearPersonNumber;
                        }
                    }
                    else if(timerCount - leakTimer < 24 * 7)
                    {
                        calculationSigningRate = calculationSigningRate + signingRate;
                        if(ladderShakingConfigurationNumber > 0)
                        {
                            yearPersonNumber = 6*ladderShakingConfigurationNumber / yearPersonNumber;
                            calculationSigningRate = calculationSigningRate + yearPersonNumber;
                        }
                    }
                    else if(timerCount - leakTimer < 24 * 8)
                    {
                        calculationSigningRate = calculationSigningRate + signingRate;
                        if(ladderShakingConfigurationNumber > 0)
                        {
                            yearPersonNumber = 7*ladderShakingConfigurationNumber / yearPersonNumber;
                            calculationSigningRate = calculationSigningRate + yearPersonNumber;
                        }
                    }
                }
                else
                {
                    calculationSigningRate = calculationSigningRate + signingRate;
                }
                
                NSLog(@"时间 %d年-%d月,总摇号有效次数:%d, 摇号时间:%d月 中签率:%f%%", indexYear,indexMonth,timerCount - leakTimer,timerCount,calculationSigningRate*100);
                
                if(calculationSigningRate >= 1)
                {
                    findSigningRate = YES;
                    yearPersonNumber = yearPersonNumberTemp;
                    NSLog(@"预计最迟中签时间 %d年-%d月,总摇号有效次数:%d, 摇号时间:%d月 距离预计最迟中签时间还剩下(月):%d月, 距离预计最迟中签时间还剩下(年):%f年\n 总中签率:%f%%,开始时间:%d年-%d月 \n 基准中签率:%f%% ,基准时间:%d年-%d月,阶梯摇号指标:%lld, 达到两年阶梯摇号的人数:%lld,两年阶梯摇号的中签概率:%f%%,达到四年阶梯摇号的人数:%lld,四年阶梯摇号的中签概率:%f%%, 无效效摇号次数:%d", indexYear,indexMonth,timerCount - leakTimer,timerCount,remainderTimerCount,((double)remainderTimerCount)/12,calculationSigningRate*100,startYear,startMonth,signingRate*100,year,month,ladderShakingConfigurationNumber,towYearPersonNumber,100*ladderShakingConfigurationNumber/(double)(yearPersonNumber),fourYearPersonNumber, 100*2*ladderShakingConfigurationNumber/(double)(yearPersonNumber),leakTimer);
                }
            }
        }
    }
    
}

下面是从杭州首次摇号开始时间到当前月份(包括当月)的开始摇号人,预计百分之百中签的各种数据:

-(void)statisticsSigningRate
{
//    int       year                             = 2018;          //中签率基准年
//    int       month                            = 7;             //中签率基准年
    double    signingRate                      = 0.0062467;        //中签率基准年
    long long towYearPersonNumber              = 167357;        //两年没有中签遗留人数
    long long fourYearPersonNumber             = 17026;         //四年没有中签遗留人数
    long long sixYearPersonNumber              = 0;
    long long eightYearPersonNumber            = 0;
    long long tenYearPersonNumber              = 0;
    long long twelveYearPersonNumber           = 0;
    long long fourteenYearPersonNumber         = 0;
    int startYear                              = 2016;          //本人开始摇号的年
    int startMonth                             = 8;             //本人开始摇号的月
    int leakTimer                              = 0;             //从开始摇号开始审核失效的摇号次数
    long long ladderShakingConfigurationNumber = 10000;         //一次阶梯摇号的指标
    
    
    int shakingStartYear                       = 2014;          //杭州摇号第一期摇号的年,固定值不要修改
    int shakingStartMonth                      = 5;             //杭州摇号第一期摇号的月,固定值不要修改
    
    int ladderShakingStartYear                 = 2018;          //杭州阶梯摇号第一期摇号的年,固定值不要修改
    int ladderShakingStartMonth                = 7;             //杭州阶梯摇号第一期摇号的月,固定值不要修改
    
    
    if(leakTimer < 0)
    {
        leakTimer = abs(leakTimer);
    }
    
    //防止除数为0
    if(towYearPersonNumber <= 0)
    {
        towYearPersonNumber = 167357;
    }
    if(fourYearPersonNumber <= 0)
    {
        fourYearPersonNumber = 17026;
    }
    
    long long nowTime = (long long)([[NSDate date] timeIntervalSince1970]);
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateStyle:NSDateFormatterMediumStyle];
    [formatter setTimeStyle:NSDateFormatterShortStyle];
    [formatter setDateFormat:@"yyyy"];
    NSDate *confromTimesp = [NSDate dateWithTimeIntervalSince1970:nowTime];
    int nowYear = [[formatter stringFromDate:confromTimesp] intValue];
    
    NSDateFormatter *monthFormatter = [[NSDateFormatter alloc] init];
    [monthFormatter setDateStyle:NSDateFormatterMediumStyle];
    [monthFormatter setTimeStyle:NSDateFormatterShortStyle];
    [monthFormatter setDateFormat:@"MM"];
    NSDate *monthFormatterConfromTimesp = [NSDate dateWithTimeIntervalSince1970:nowTime];
    int nowMonth = [[monthFormatter stringFromDate:monthFormatterConfromTimesp] intValue];
    
    if(0 == startYear)
    {
        startYear = nowYear;
        startMonth = nowMonth;
        leakTimer = 0;
    }
    BOOL findSigningRate = NO;
    double calculationSigningRate = 0.0;
    int timerCount = 0;
    int remainderTimerCount = 0;
    double yearPersonNumber = 0;
    BOOL isFirstMonth = YES;
    BOOL isFirstStartMonth = YES;
    double yearPersonNumberTemp = (towYearPersonNumber - fourYearPersonNumber - sixYearPersonNumber - eightYearPersonNumber - tenYearPersonNumber - twelveYearPersonNumber - fourteenYearPersonNumber) + (fourYearPersonNumber - sixYearPersonNumber - eightYearPersonNumber - tenYearPersonNumber - twelveYearPersonNumber - fourteenYearPersonNumber)*2 + (sixYearPersonNumber - eightYearPersonNumber - tenYearPersonNumber - twelveYearPersonNumber - fourteenYearPersonNumber)*3 + (eightYearPersonNumber- tenYearPersonNumber - twelveYearPersonNumber - fourteenYearPersonNumber) *4 + (tenYearPersonNumber - twelveYearPersonNumber - fourteenYearPersonNumber)*5 + (twelveYearPersonNumber - fourteenYearPersonNumber) *6 + fourteenYearPersonNumber*7;
    
    yearPersonNumber = yearPersonNumberTemp;
    
    for(int i = shakingStartYear; ; i++)
    {
        if(i > nowYear)
        {
            break;
        }
        
        int j = 1;
        if(isFirstStartMonth)
        {
            j = shakingStartMonth;
            isFirstStartMonth = NO;
        }
        for(; (j <= 12); j++)
        {
            if((i == nowYear) && (j > nowMonth))
            {
                break;
            }
            findSigningRate = NO;
            calculationSigningRate = 0.0;
            timerCount = 0;
            remainderTimerCount = 0;
            yearPersonNumber = 0;
            isFirstMonth = YES;
            startYear = i;
            startMonth = j;
            leakTimer = 0;
            
            for(int indexYear = shakingStartYear; !findSigningRate; indexYear++)
            {
                int indexMonth = 1;
                if(isFirstMonth)
                {
                    indexMonth = shakingStartMonth;
                    isFirstMonth = NO;
                }
                for(; !findSigningRate && (indexMonth <= 12); indexMonth++)
                {
                    if(indexYear > startYear)
                    {
                        timerCount++;
                    }
                    else if((indexYear == startYear) && (indexMonth >= startMonth))
                    {
                        timerCount++;
                    }
                    
                    if((indexYear > nowYear) || ((indexYear == nowYear) && (indexMonth >= nowMonth)))
                    {
                        remainderTimerCount++;
                        yearPersonNumber = yearPersonNumberTemp;
                        if(((indexYear > ladderShakingStartYear) || ((indexYear == ladderShakingStartYear) && (indexMonth >= ladderShakingStartMonth))) && ((7 == indexMonth) || (1 == indexMonth)))
                        {
                            if(timerCount - leakTimer < 24)
                            {
                                calculationSigningRate = calculationSigningRate + signingRate;
                            }
                            else if(timerCount - leakTimer < 24 * 2)
                            {
                                calculationSigningRate = calculationSigningRate + signingRate;
                                if(ladderShakingConfigurationNumber > 0)
                                {
                                    yearPersonNumber = ladderShakingConfigurationNumber / yearPersonNumber;
                                    calculationSigningRate = calculationSigningRate + yearPersonNumber;
                                }
                            }
                            else if(timerCount - leakTimer < 24 * 3)
                            {
                                calculationSigningRate = calculationSigningRate + signingRate;
                                if(ladderShakingConfigurationNumber > 0)
                                {
                                    yearPersonNumber = 2*ladderShakingConfigurationNumber / yearPersonNumber;
                                    calculationSigningRate = calculationSigningRate + yearPersonNumber;
                                }
                            }
                            else if(timerCount - leakTimer < 24 * 4)
                            {
                                calculationSigningRate = calculationSigningRate + signingRate;
                                if(ladderShakingConfigurationNumber > 0)
                                {
                                    yearPersonNumber = 3*ladderShakingConfigurationNumber / yearPersonNumber;
                                    calculationSigningRate = calculationSigningRate + yearPersonNumber;
                                }
                            }
                            else if(timerCount - leakTimer < 24 * 5)
                            {
                                calculationSigningRate = calculationSigningRate + signingRate;
                                if(ladderShakingConfigurationNumber > 0)
                                {
                                    yearPersonNumber = 4*ladderShakingConfigurationNumber / yearPersonNumber;
                                    calculationSigningRate = calculationSigningRate + yearPersonNumber;
                                }
                            }
                            else if(timerCount - leakTimer < 24 * 6)
                            {
                                calculationSigningRate = calculationSigningRate + signingRate;
                                if(ladderShakingConfigurationNumber > 0)
                                {
                                    yearPersonNumber = 5*ladderShakingConfigurationNumber / yearPersonNumber;
                                    calculationSigningRate = calculationSigningRate + yearPersonNumber;
                                }
                            }
                            else if(timerCount - leakTimer < 24 * 7)
                            {
                                calculationSigningRate = calculationSigningRate + signingRate;
                                if(ladderShakingConfigurationNumber > 0)
                                {
                                    yearPersonNumber = 6*ladderShakingConfigurationNumber / yearPersonNumber;
                                    calculationSigningRate = calculationSigningRate + yearPersonNumber;
                                }
                            }
                            else if(timerCount - leakTimer < 24 * 8)
                            {
                                calculationSigningRate = calculationSigningRate + signingRate;
                                if(ladderShakingConfigurationNumber > 0)
                                {
                                    yearPersonNumber = 7*ladderShakingConfigurationNumber / yearPersonNumber;
                                    calculationSigningRate = calculationSigningRate + yearPersonNumber;
                                }
                            }
                        }
                        else
                        {
                            calculationSigningRate = calculationSigningRate + signingRate;
                        }
                        
                        if(calculationSigningRate >= 1)
                        {
                            findSigningRate = YES;
                            yearPersonNumber = yearPersonNumberTemp;
                            NSLog(@"开始摇号时间 %d年-%d月,  中签时间 %d年-%d月, 摇号时间:%d月 剩下(月):%d月", startYear,startMonth, indexYear,indexMonth,timerCount-leakTimer,remainderTimerCount > timerCount-leakTimer ? timerCount-leakTimer : remainderTimerCount);
                        }
                    }
                }
            }
        }
    }
    
}

其实最好的解决办法是买插电混动车,那样可以用不需要摇号的绿牌,现在上新能源牌杭州已经免费办了,北京的新能源车指标已经从2018年10月排到2026年了。若没有买车建议买插电魂动车,那样省油还上牌不需要摇号。等最后办理新能源的人多,像北京一样排队领指标,甚至摇号都有可能。何必在摇号这一条路上吊着呢?群人都在抢的东西并不一定是好东西,只有想别人没有多少人想到的才是最容易得到的。还是趁杭州新能源车上牌不需要摇号,不需要排队赶紧去买插电混动新能源车去吧!等需要排队时一切都晚了,北京只半年新能源车指标排队晚三年就是一个例子。参考:北京新能源指标已排至2026年后,这4千多人不能摇号(2018年10月25日)和北京摇号人数首度下降减2万人 新能源车指标已排到2023年(2018年4月9日)。

《2021杭州车牌阶梯摇号中签率(持续更新)》。

【导语】:第七次(2021J1期)阶梯摇号中签率大概为2.49%,第六次(2020J3期)阶梯摇号中签率大概为2.62%,第五次(2020J2期)阶梯摇号中签率大概为4.28%。
第七次(2021J1期)小客车指标个人阶梯摇号

  配置指标:10000个

  有效申请编码总数:401223个

  中签率:2.49%(10000/401223)

  第六次(2020J3期)小客车指标个人阶梯摇号

  配置指标:10000个

  有效申请编码总数:381035个

  中签率:2.62%(10000/381035)

  第五次(2020J2期)小客车指标个人阶梯摇号

  配置指标:15000个

  有效申请编码总数:350246个

  中签率:4.28%(15000/350246)

  第四次(2020J1期)小客车指标个人阶梯摇号

  配置指标:10000个

  有效申请编码总数:300568个

  中签率:3.33%(10000/300568)

  第三次(2019J2期)小客车指标个人阶梯摇号

  配置指标:10000个

  有效申请编码总数:333040个

  中签率:3.00%(10000/333040)

  第二次(2019年1月)小客车指标个人阶梯摇号

  配置指标:10000个

  有效申请编码总数:288405个

  中签率:3.47%(10000/288405)

  第一次(2018年7月)小客车指标个人阶梯摇号

  配置指标:10000个

  有效申请编码总数:184383个

  中签率:5.42%(10000/184383)


目录
相关文章
|
Python
Python 金融量化 均线系统交易策略专题(简单移动平均,加权移动平均,指数加权移动平均,异同移动平均MACD等解读与绘图)
Python 金融量化 均线系统交易策略专题(简单移动平均,加权移动平均,指数加权移动平均,异同移动平均MACD等解读与绘图)
1111 0
Python 金融量化 均线系统交易策略专题(简单移动平均,加权移动平均,指数加权移动平均,异同移动平均MACD等解读与绘图)
|
2月前
均值回归策略在A股ETF市场获利的可能性
【9月更文挑战第24天】均值回归策略是一种量化交易方法,依据资产价格与平均价格的关系预测价格变动。在A股ETF市场中,该策略可能带来收益,但需考虑市场复杂性和不确定性。历史数据显示某些ETF具有均值回归特征,但未来表现不确定,投资者应结合技术与基本面分析,合理决策并控制风险。
|
6月前
|
算法 数据可视化 数据挖掘
R语言指数平滑预测法分析南京出租车打车软件空载率时间序列补贴政策可行性
R语言指数平滑预测法分析南京出租车打车软件空载率时间序列补贴政策可行性
|
6月前
|
数据挖掘 数据建模
R语言指数加权模型EWMA预测股市多变量波动率
R语言指数加权模型EWMA预测股市多变量波动率
R语言指数加权模型EWMA预测股市多变量波动率
|
6月前
R语言中进行期权定价的Heston随机波动率模型
R语言中进行期权定价的Heston随机波动率模型
|
6月前
|
算法 测试技术
R语言基于Garch波动率预测的区制转移交易策略
R语言基于Garch波动率预测的区制转移交易策略
|
6月前
|
算法 数据挖掘
R语言面板数据回归:含时间固定效应混合模型分析交通死亡率、酒驾法和啤酒税
R语言面板数据回归:含时间固定效应混合模型分析交通死亡率、酒驾法和啤酒税
|
6月前
|
安全 vr&ar
R语言非线性动态回归模型ARIMAX、随机、确定性趋势时间序列预测个人消费和收入、用电量、国际游客数量
R语言非线性动态回归模型ARIMAX、随机、确定性趋势时间序列预测个人消费和收入、用电量、国际游客数量
|
6月前
R语言量化:合成波动率指数移动平均策略分析标准普尔500波动率指数(VIX)
R语言量化:合成波动率指数移动平均策略分析标准普尔500波动率指数(VIX)
|
6月前
|
算法 测试技术
Garch波动率预测的区制转移交易策略
Garch波动率预测的区制转移交易策略