c-c++随机分配器

c-c++随机分配器

微信红包???

大家就算再跟不上时代,微信总是用过的吧。那么,我想,红包大家抢过吧??微信红包那神神秘秘的分配机制总是让人倍受惊喜(jīng’xià),令人欢呼(páo’xiào),令人把手机从28楼迫降。那么,微信红包之所谓的随机分配,我们能不能实现呢???

随机分配

至于微信是怎么分的,我反正不大清楚,但是我还是能效仿出一个差不多的,效果看起来相似。唯一有个缺点是不能分配较多份的总额,不然会卡S的。十分简单,只是随机生成一个小于总额的数输出,再在总额里减去相应的数,直到最后一个直接输出。代码如下:

#include <iostream>
#include <conio.h>
#include <windows.h>
#include <cstdlib>
#include <ctime>

using namespace std;

int s=0, v=0;
char ch;
void TalkLD()
{<!-- -->
    cout<<".";
    Sleep(300);
    cout<<".";
    Sleep(300);
    cout<<".";
    Sleep(300);
    cout<<endl;
}
void fp()
{<!-- -->
    system("cls");
    int x1=v;
    for (int k=1;k<=s;k++)
    {<!-- -->
        if (k==s)
        {<!-- -->
            cout<<k<<" ";
            cout<<x1<<endl;
            break;
        }
        int i=rand()%x1+1;//至少为1
        cout << k<<" "<< i <<endl;
        x1-=i;
    }
} 
void dr()
{<!-- -->
    system ("cls");
    cout<<"分配总额(输完按回车):"; 
    cin>>v;
    cout<<"分配数量(输完按回车):";
    cin>>s;
    system ("cls");
}
int main()
{<!-- -->
    system("pause");
    system("cls");
    cout<<"加载中";
    TalkLD();
    Sleep(1000); 
    system("cls");
    cout<<"欢迎使用随机分配器.";
    Sleep(1000);
    system("cls"); 
    system ("title s-键入变量,t键开始分配,e键结束");
    srand(time(NULL));
    while (1)
    {<!-- -->
        ch=getch();
        switch (ch){<!-- -->
            case 't':
                fp();
                cout<<endl;
                break;
            case 's':
                dr();
                break; 
            case 'e':
                return 0;
                break;
        };
    } 
    return 0;
}

注意:

要Windows系统才可以。非Windows可以试一下啊哈C编译器,据说是可以滴。
点个赞再走呗~~~

posted @ 2021-01-12 16:39  刘桓湚  阅读(175)  评论(0编辑  收藏  举报