这是我要搭建的模型。
大体说下:
就是需要建立6级阶梯模型,每一级都分成两个阶段。比如开始的principal是2400,然后进入第一级随机增减,一共的12个阶段分别是
1 3 2 6 4 12 8 24 16 48 32 96
什么意思呢,1 3 对应1-1;1-2 。2 6 对应2-1 2-2、以此类推
1,首先看第一级,1 3 即把principal分成4份,1-1 占1份,1-2占3份。第二级以此类推。
2,当第一级中的1-1份数随机减掉了后,就开始进入1-2 。
3. 在1-2中将1-1的份额提升回来后,重新进入1-1 。如果1-2 的份额也消耗完,就结束了。
4,当1-1积累了原来的初始的3倍后,进入第二级中的2-1 。。后面运行流程同第一级。不同的是:
1)进入第二级时的principal不再是第一级中1-1的3倍。而是1-1的2倍。剩下的部分储存起来。压入堆栈中。
2)当2-2中的份额消耗结束后,第二级结束,同时流程回退到第一级,这时将堆栈中的储存量pop出来作为第一级的principal。
5,后面第二级积累到2级初始值的3倍后,进入第三级,同样操作堆栈储存。第4级,5级以此类推。。。
6,知道第六级中积累到规定量后,流程结束。
下面是我用c++实现的过程:
// level.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> #include <stack> #include <math.h> using namespace std; int Betting( int cur,int plan[][2],int i,int j,int principal,int times) { //for (;i<6;i++) //{ // j=0; // for (;j<2;j++) // { // cout<<plan[i][j]<<"\t"; // } // cout<<"\n"; //} //..... cout<<"<Betting> plan: "<<plan[i][j]<<" i: "<<i<<" j: "<<j<<endl; //int min_num=plan[i][j]*principal/10; //int rand_num=rand()%(2*min_num)-min_num; //cout<<"<Betting> rand_num: "<<rand_num<<endl; //cur=cur+rand_num; if (times<=4) cur=cur*3; else cur=cur+10000; //cout<<"<Betting> cur: "<<cur<<endl; return cur; } int main(int argc, _TCHAR* argv[]) { int principal=2400; int income=principal; int i=0,j=0; stack <int> storage; int total[6]={0}; int level=1; /* *根据初始值及级别设置存储值 *e.g. *principal=3,total[]={0 3 9 21 45 93}; */ for (int index=1;index<6;index++) { total[index]=total[index-1]+principal*level; level=level*2; } /*for (int index=0;index<6;index++) { cout<<total[index]<<"\t"; }*/ storage.push(total[i]); //int plan[6][2]={1,2,2,4,4,8,8,16,16,32,20,40}; int plan[6][2]={1,3,2,6,4,12,8,24,16,48,32,96}; int cur=income; for (int times=0;times<15;times++) { //cout<<"<main> cur:"<<cur<<endl; cur=Betting(cur,plan,i,j,principal,times); //cout<<"<main> cur:"<<cur<<endl; if (cur>= principal*pow((double) 2,i+1)*3/2&&i<=4) { j=0; i++; //if (i>=5) //{ // break; //} cur=cur-total[i]+storage.top(); storage.push(total[i]); }else if(0>=cur) { j=0; i--; if (i<0) { break; } cur=storage.top(); storage.pop(); cur=cur-storage.top(); }else if(cur<=principal*pow((double) 2,i+1)/3) { //cout<<"<main> cur:"<<cur<<" "<<((int) pow((double) 2,i+1))<<endl; j=1; } cout<<"<main> cur:"<<cur<<endl; } income=cur+storage.top(); cout<<"income: "<<income<<endl; cout<<"storage:"<<endl; while(storage.size()>0) { cout<<storage.top()<<endl; storage.pop(); } return 0; }
今天的文章 阶梯型递进模型算法的实现分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/98790.html