#include "stdio.h"
#include "stdlib.h"
#include "time.h"
long getTimeNs() //为了模拟抢红包结语效果借鉴的时间统计代码
{
struct timespec ts;
clock_gettime(CLOCK_REALTIME, &ts);
return ts.tv_sec * 1000000000 + ts.tv_nsec;
}
void goodLuck(double money, int people, double max, double min); //函数原型
int main()
{
//变量定义:
int i, people;
double money, max, min;
srand(time(NULL)); //设置随机数种子
//获取必要参数:
scanf("%lf", &money);
scanf("%d", &people);
scanf("%lf", &max);
scanf("%lf", &min);
//开始模拟抢红包:
goodLuck(money, people, max, min);
return 0;
}
void goodLuck(double money, int people, double max, double min)
{
double a = getTimeNs();
int i;
double sum = 0;
int N = people;
double lucky[N];
for (i = 0; i < N; i++)
{
//使用随机数分配红包权重:
lucky[i] = (double)rand() / RAND_MAX * (max - min) + min;
sum += lucky[i];
}
int MAX_ = 0, MAX_Index; //运气王数据
for (i = 0; i < N; i++)
{
//使用权重分配金额,防止总金额不匹配:
lucky[i] = lucky[i] / sum * money;
printf("恭喜%d号玩家获得%.2lf元\n", i, lucky[i]);
//运气王的实现:
if (lucky[i] > MAX_)
{
MAX_ = lucky[i];
MAX_Index = i;
}
}
double b = getTimeNs();
double time = (b - a) / 100000;
printf("红包在%.2lf秒内被抢完,%d号玩家是运气王", time,MAX_Index);
}
@探姬!!!!!