写的一般,欢迎提出更好的思路
void RandMoney(float money, int person)
{
float dif = money - 0.01*person;
if (dif < 0 && abs(dif)>1e-6)
cout << "每个红包金额不能低于0.01元" << endl;
else if (abs(dif) <= 1e-6)//刚好每个人0.01元
{
float* res = (float*)malloc(person*sizeof(float));
for (int i = 0; i < person; i++)
{
res[i] = 0.01;
cout << res[i] << endl;
}
}
else
{
srand((unsigned)time(NULL));
vector<int> vec_rand;
vector<float> vec_res;
int sum = 0;
for (int i = 0; i < person; i++)
{
vec_rand.push_back(rand() % 50 + 1);
sum += vec_rand[i];
}
float one = money / sum;
float fsum = 0;
for (int i = 0; i < person; i++)
{
float x = one*vec_rand[i];
char s[6] = { 0 };
sprintf(s, "%.2f", x);
vec_res.push_back(atof(s));
fsum += vec_res[i];
}
if (abs(money - fsum)>1e-6)
vec_res[person - 1] += abs(money - fsum);
for (int i = 0; i < person; i++)
cout << vec_res[i] << endl;
}
}