【娱乐】暴力研究——完美冰无垫短冰波的...
 
通知
清除全部

【娱乐】暴力研究——完美冰无垫短冰波的精确炸率标定


100kt
评论: 29
主题创建者
(@100kt)
小丑压制
注册于: 4年前

假设:小丑速度参数在 335545 个 fp32 间均匀取值,小丑倒计时随机数为一个 0~299 的均匀整数分布,1/20为早爆丑,出生点为一个 780~819 的均匀整数分布。

下表列出了在一段时间内每个时机,单个小丑的一切可能性在对应位置开盒的数量。

1 Reply
100kt
评论: 29
主题创建者
(@100kt)
小丑压制
注册于: 4年前
const std::array<float,19> jack_ground = {
    -49.8f, -49.8f, -49.2f, -48.6f, -47.9f, -44.3f,
    -40.7f, -39.7f, -38.7f, -38.7f, -37.8f, -36.8f, -35.8f,
    -34.0f, -32.1f, -32.1f, -32.1f, -30.5f, -28.9f
};
constexpr int jack_frame_cnt=19;
constexpr float jack_tot_dx=-28.9f-(-49.8f);
constexpr unsigned jack_dx_lim=0x3f28f5c3,jack_dx_sup=0x3f2e147b;
void oper_jack(int t,int ice_time,bool is_half){
    for(int i=0;i<40;++i){
        for(unsigned dx=jack_dx_lim;dx<=jack_dx_sup;++dx){
            float f_dx=*(float*)&dx;
            jack_walk(f_dx,t,ice_time,is_half,i);
        }
    }
}

void jack_walk(float dx,int t,int ice_time,bool is_half,int begin_pos){
    float delta_reanim_progress=(dx*moveC/jack_tot_dx)*0.01f;
    float reanim_progress=delta_reanim_progress;
    if(is_half)reanim_progress*=chill_modifier;
    // reanim_progress=0;
    float absc=static_cast(780+begin_pos);
    int init_absc=780*16384,now_movement;
    float now_modifier;
    int bump_t = -1;
    for(int i=1;i<=t;++i){
        int now_frameID=static_cast(reanim_progress*(jack_frame_cnt-1));
        now_modifier=(i>=ice_time)?chill_modifier:1;
        reanim_progress+=delta_reanim_progress*now_modifier;
        if(static_cast(absc)<=tar_pos){
            bump_t = i;
            break;
        }
        absc-=dx*now_modifier*(jack_ground[now_frameID+1]-jack_ground[now_frameID])*moveC*jack_frame_cnt*per_cent/jack_tot_dx;
        if(reanim_progress>=1)reanim_progress-=1;
    }
    if(bump_t==-1)return;
    // std::cout<<std::fixed<<std::setprecision(8)<<dx<<" "<<bump_t<<"\n";
    for(int ice_l = 0;ice_l<=200;++ice_l){
        if(bump_t+ice_l+399>tar_t)break;
        int ctd = tar_t - (ice_l+400),true_ct;
        for(int jack_ct = 70;jack_ct <= 299;++jack_ct){
            true_ct = ((static_cast(static_cast((450+jack_ct)/3)/dx))<<1);
            if(true_ct>ctd)break;
            if(true_ct+1<bump_t)continue;
            ++tot_jacks;
            ++cnt_jack[true_ct+ice_l+400];
        }
    }
}

应邀放出了部分计算代码以供参考,其中 70 是我自己取的魔数,因为更早爆的小丑必然炸空气。坐标更新顺序是按我自己的理解来的。

回复
Scroll to Top
zh_CN简体中文
Powered by TranslatePress »