当前位置 博文首页 > pzjdsg666的博客:微信抢红包随机算法

    pzjdsg666的博客:微信抢红包随机算法

    作者:[db:作者] 时间:2021-06-18 09:12

    做这东西,要讲究2个原则:平均+公平。

    现在,我们先来介绍一下随机算法:

    #include<cstdlib>
    #include<ctime>
    #include<iostream>
    using namespace std;
    int main(){
        srand(time(0));//产生随机数种子
        for(int i=1;i<=10;i++)
            cout<<rand();
        return 0;
    }

    运行结果:

    27045 32245 24474 7326 18083 20626 22847 20602 26863 20307

    27042 21496 6610 16031 7769 16699 19735 23530 10351 264

    所以,代码如下:

    #include<bits/stdc++.h>
    using namespace std;
    const int int_max=2147483647;
    int n,m,maxk,maxi,mink=int_max,mini=int_max;
    int main(){
    	srand(time(0));
    	cin>>n>>m;
    	for(int i=1;i<m;i++){
    		int v=2*n/m-1;
    		int k=rand()%v+1;
    		if(k>maxk){
    			maxk=k;
    			maxi=i;
    		}
    		if(k<mink){
    			mink=k;
    			mini=i;
    		}
    		cout<<"第"<<i<<"个人抢到"<<k<<"元"<<endl;
    		n-=k;
    	}
    	cout<<"第"<<m<<"个人抢到"<<n<<"元"<<endl<<endl;
    	if(n>maxk){
    		maxk=n;
    		maxi=m;
    	}
    	if(n<mink){
    		mink=n;
    		mini=m;
    	}
    	cout<<"手气之王是:"<<endl;
    	cout<<"第"<<maxi<<"个人抢了"<<maxk<<"元,继续努力哟!"<<endl<<endl;
    	cout<<"手气弱者是:"<<endl;
    	cout<<"第"<<mini<<"个人只抢了"<<mink<<"元,要加油哟!"<<endl<<endl;
    	return 0;
    }

    ?

    上一篇:没有了
    下一篇:没有了