目前只能实现对于整数的钱数的红包的实现,经过随机数从而实现随机人抢红包的算法
/*
vs 2013
wk
*/
#include<iostream>
#include<time.h>
#include<math.h>
#include<stdlib.h>
using namespace std;
//min 默认最小金额 1=0.01元
//max 默认最大金额 20000 = 200 元
//total 总钱数
//num 总人数
long long CalcRandomValue(long long min, long long max, long long total, long long num)
{
if (num == 1)
{
return total;
}
//跟新随机种子
srand((unsigned int)time(NULL));
//锁定本次随机范围
long long low = (total - (num - 1)*max) < min ? min : (total - (num - 1)*max);
long long high = (total - (num - 1)*min) > max ? max : (total - (num - 1)*min);
long long ave = (total / num) > 1 ? (total / num) : 1;
//调整上限
if (high > 2 * ave)
{
high = 2 * ave;
}
//生成随机值
long long ram = rand() % high;
//防止溢出
if (ram < low)
ram = low;
if (ram > high)
ram = high;
return abs(ram);
}
long long qi