为锦标赛系统分配奖品

2024-02-29

我正在寻找一种将数字分布到 x 个单位的方法。我什至不知道如何表达这个词,所以我举个例子:

有一场锦标赛,总奖金为 1000 美元。我希望前 20 名获胜者/参赛者能够从中赢得一些东西。
我需要一个数学算法/公式,将其分配给这些玩家,并让我有能力控制分配的某些其他因素。

例如,我希望排名第一的获胜者能够获得 300 美元。排名第二的获胜者将获得较小的比例。总分配必须给每个人一些东西,直到前 20 名获胜者(最后一名)将获得至少 X 美元。
X$ 是我想控制的另一个因素。

任何想法?这个问题有名字吗(这个名字是什么)?有代码示例吗?

编辑 #1 - 我的第一个提案:

#include <conio.h>
#include <vector>

#define TOTAL                       100
#define WINNERS                     15
#define FIRST_WINNER_PERCENTAGE     0.30

void distribute_1(::std::vector<double> * const prizes)
{
    prizes->clear();

    double total = TOTAL;
    double winning_percentage = FIRST_WINNER_PERCENTAGE;
    double slope = 0.5;
    int winners = WINNERS;

    double winning = 0;
    for(int i = 0; i < winners; i++, total -= winning, winning_percentage /= 2)
    {
        winning = total * winning_percentage;
        prizes->push_back(winning);
    }
}
void distribute_2(::std::vector<double> * const prizes)
{
    prizes->clear();

    double total = TOTAL;
    double winning_percentage = FIRST_WINNER_PERCENTAGE;
    double slope = 0.5;
    int winners = WINNERS;

    double winning = 0;
    for(int i = 0; i < winners; i++, total -= winning/*, winning_percentage /= 2*/)
    {
        winning = total * winning_percentage;
        prizes->push_back(winning);
    }
}
void distribute_3(::std::vector<double> * const prizes)
{
    prizes->clear();

    double total = TOTAL;
    double winning_percentage = FIRST_WINNER_PERCENTAGE;
    double slope = 0.0005;
    int winners = WINNERS;

    double winning = 0;
    for(int i = 0; i < winners; i++, total -= winning, winning_percentage -= slope)
    {
        winning = total * winning_percentage;
        prizes->push_back(winning);
    }
}
void distribute_4(::std::vector<double> * const prizes)
{
    prizes->clear();

    double total = TOTAL;
    double winning_percentage = FIRST_WINNER_PERCENTAGE;
    double slope = 1 / WINNERS;
    int winners = WINNERS;

    double winning = 0;
    for(int i = 0; i < winners; i++, total -= winning, winning_percentage -= slope)
    {
        winning = total * winning_percentage;
        prizes->push_back(winning);
    }
}

void main()
{
    ::std::vector<double> prizes;

    distribute_1(&prizes);
    distribute_2(&prizes);
    distribute_3(&prizes);
    distribute_4(&prizes);

    double total_granted = 0;
    for(int i = 0; i < WINNERS; i++)
    {
        total_granted += prizes[i];
        printf("%lf\n", prizes[i]);
    }
    printf("-\n%lf\n", total_granted);

    _getch();
}

这是我所能达到的极限。例如,这个问题的问题是,如果您将“WINNERS”设置为 5,则算法不会达到“TOTAL”数量(本例中为 100)或更接近(我总共得到 83) 。

克里斯蒂的解决方案:

#include <conio.h>
#include<iostream>
//using arithmetic progression
using namespace std;
int i;
float ratio;
float first_prize;
float s;
int main()
{
    float money=1000;
    const int total_prizes =        10;
    float last_prize =              99;
    float prizes[total_prizes+1];

    /**/first_prize=2*money/total_prizes-last_prize; //last member of the progresion
    ratio=(first_prize-last_prize)/(total_prizes-1);
    prizes[total_prizes]=last_prize;
    for(i=total_prizes-1;i>=1;i--){
       prizes[i]=prizes[i+1]+ratio;
       money-=prizes[i];
    }
    for(i=1;i<=total_prizes;i++){
        printf("%d) %.2f\n",i,prizes[i]);
        s+=prizes[i];
    }
    printf("TOTAL SUM:%.2f\n",s);
    printf("Ratio: %.2f", ratio);
    _getch();
}

现在是凌晨 1:15,我正在解数学:))。
使用算术级数。
我使用定义进行了所有操作,以便您可以轻松更改它们。

#include<iostream>
//using arithmetic progression
using namespace std;
FILE *g=fopen("output.out","w");
#define last_prize 10
#define total_prizes 20
int i;
float prizes[total_prizes+1];
float money=1000;
float ratio;
float first_prize;
float s;
//a1=last_prize
//an=first_prize
int main(){
 first_prize=2*money/total_prizes+last_prize; //last member of the progresion
 ratio=(first_prize-last_prize)/(total_prizes-1);
 prizes[total_prizes]=last_prize;
    for(i=total_prizes-1;i>=1;i--)
       prizes[i]=prizes[i+1]+ratio;
 for(i=1;i<=total_prizes;i++){
  fprintf(g,"%d) %.2f\n",i,prizes[i]);
  s+=prizes[i];
 }
 fprintf(g,"TOTAL SUM:%.2f",s);
return 0;
}

OUTPUT:

1) 90.00
2) 85.79
3) 81.58
4) 77.37
5) 73.16
6) 68.95
7) 64.74
8) 60.53
9) 56.32
10) 52.11
11) 47.89
12) 43.68
13) 39.47
14) 35.26
15) 31.05
16) 26.84
17) 22.63
18) 18.42
19) 14.21
20) 10.00
TOTAL SUM:1000.00

正如你所看到的,它们的总和正好是 1000.00$ :D

其他结果:
INPUT:

#define last_prize 30
#define total_prizes 5

OUTPUT:

1) 370.00
2) 285.00
3) 200.00
4) 115.00
5) 30.00
TOTAL SUM:1000.00
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为锦标赛系统分配奖品 的相关文章

  • 哪种数据聚类算法适合检测时间序列事件中未知数量的聚类?

    这是我的场景 考虑在不同地点和时间发生的一组事件 例如 考虑有人在高空记录暴风雨期间城市中的雷击 就我的目的而言 闪电是瞬时的 只能击中某些位置 例如高层建筑 还可以想象每次雷击都有一个唯一的 ID 以便以后可以参考该雷击 这个城市大约有1
  • C# 中四舍五入到偶数

    我没有看到 Math Round 的预期结果 return Math Round 99 96535789 2 MidpointRounding ToEven returning 99 97 据我了解 MidpointRounding ToE
  • 找到的程序集的清单定义与程序集引用不匹配

    我试图在 C Windows 窗体应用程序 Visual Studio 2005 中运行一些单元测试 但出现以下错误 System IO FileLoadException 无法加载文件或程序集 实用程序 版本 1 2 0 200 文化 中
  • 如何在不实例化一个类的情况下检查它是否继承了另一个类? [复制]

    这个问题在这里已经有答案了 假设我有一个如下所示的类 class Derived some inheritance stuff here 我想在我的代码中检查类似的内容 Derived is SomeType 但看起来像is运算符需要 De
  • 无法从 Web api POST 读取正文数据

    我正在尝试从新的 Asp Net Web Api 中的请求中提取一些数据 我有一个像这样的处理程序设置 public class MyTestHandler DelegatingHandler protected override Syst
  • 从 future 中检索值时的 SIGABRT

    我在使用 C 11 future 时遇到问题 当我打电话时wait or get 关于返回的未来std async 程序接收从mutex标头 可能是什么问题呢 如何修复它 我在 Linux 上使用 g 4 6 将以下代码粘贴到 ideone
  • 导出类时编译器错误

    我正在使用 Visual Studio 2013 但遇到了一个奇怪的问题 当我导出一个类时 它会抛出 尝试引用已删除的函数 错误 但是 当该类未导出时 它的行为会正确 让我举个例子 class Foo note the export cla
  • 如何在 Asp.net Gridview 列中添加复选框单击事件

    我在 asp 中有一个 gridview 其中我添加了第一列作为复选框列 现在我想选择此列并获取该行的 id 值 但我不知道该怎么做 这是我的 Aspx 代码
  • 在 MATLAB 中创建共享库

    一位研究人员在 MATLAB 中创建了一个小型仿真 我们希望其他人也能使用它 我的计划是进行模拟 清理一些东西并将其变成一组函数 然后我打算将其编译成C库并使用SWIG https en wikipedia org wiki SWIG创建一
  • 我可以仅在少数情况下关闭模拟吗

    我有一个始终使用模拟的应用程序 但是 当用户以管理员身份登录时 一些操作需要他们写入服务器本身 现在 如果这些用户在实际服务器上没有权限 有些用户没有 则不会让他们写入 我想做的是关闭几个命令的模拟 有没有办法做这样的事情 using Ho
  • 手动将 ClientBase 集合类型从 Array[] 更改为 List<>

    我将自己的 WCF 代理与 Client Base 一起使用 我想做一些类似于 svc util 中的 ct 属性的操作 并告诉代理返回 List 集合类型 我不能使用 List 因为实体由 nhibernate 管理 所以我必须使用 IL
  • 编译器错误“错误:在文件范围内可变地修改了‘字符串’”

    考虑 include
  • 防止GDB中的PLT(过程链接表)断点

    在最新版本的 GDB 中 在库函数调用上设置断点会导致多个实际断点 调用过程链接表 PLT 实际的函数调用 这意味着当调用库函数时 我们每次都会经历两次中断 在以前的 GDB 版本中 只会创建 2 因此您只能得到一次中断 那么问题来了 是否
  • 更改 IdentityServer4 实体框架表名称

    我正在尝试更改由 IdentityServer4 的 PersistedGrantDb 和 ConfigurationDb 创建的默认表名称 并让实体框架生成正确的 SQL 例如 而不是使用实体IdentityServer4 EntityF
  • 允许使用什么类型的内容作为 C 预处理器宏的参数?

    老实说 我很了解 C 编程语言的语法 但对 C 预处理器的语法几乎一无所知 尽管我有时在编程实践中使用它 所以问题来了 假设我们有一个简单的宏 它扩展为空 define macro param 可以放入宏调用构造中的语法有哪些限制 调用宏时
  • 将非算术类型作为参数传递给 cmath 函数是否有效?

    给定以下用户定义类型S具有转换功能double struct S operator double return 1 0 以及以下调用cmath http en cppreference com w cpp header cmath使用类型的
  • 如何将对象转换为传递给函数的类型?

    这不会编译 但我想做的只是将对象转换为传递给函数的 t public void My Func Object input Type t t object ab TypeDescriptor GetConverter t ConvertFro
  • 在 C++ 和 Windows 中使用 XmlRpc

    我需要在 Windows 平台上使用 C 中的 XmlRpc 尽管我的朋友向我保证 XmlRpc 是一种 广泛可用的标准技术 但可用的库并不多 事实上 我只找到一个库可以在 Windows 上执行此操作 另外一个库声称 您必须做很多工作才能
  • C# 粘贴到文本框时检查剪贴板中的字符

    有没有一些方法可以在粘贴到文本框 C 之前仅检查剪贴板中的字符 Ctrl V 和右键单击 gt 粘贴 但不使用 MaskedTextbox 在文本框文本更改中添加规则以仅接受数字 例如 private string value privat
  • 启动画面后主窗口出现在其他窗口后面

    我有一个带有启动屏幕的 Windows 窗体应用程序 当我运行该应用程序时 启动屏幕显示正常 消失并加载应用程序的主窗体 但是 当我加载主窗体时 它出现在包含该应用程序的 Windows 资源管理器目录下 这是运行启动画面然后运行主窗体的代

随机推荐

  • 为asp.net中的慢速页面添加实时进度更新

    我正在尝试向我的 c asp net 4 0 应用程序添加一个实时进度报告 以解决加载缓慢的页面 我查看了 UpdatePanel 和 UpdateProgress Ajax 控件 但我认为它们不合适 基本上 当用户单击按钮时 页面会执行许
  • 确定当前粘贴板内容的源应用程序

    AppStore 中的多个 OSX 剪贴板管理器显示了确定复制到剪贴板的内容的源应用程序的能力 我正在编写一些简单的剪贴板观察器 并希望在内容附近显示源应用程序图标 存储在通用 NSPasteboard 中 我想知道如何实现这一目标 据我所
  • ValueError:groupby Pandas 中的“无法从重复轴重新索引”

    我的数据框如下所示 SKU GRP CATG PRD 0 54995 9404000 4040 99999 1 54999 9404000 4040 99999 2 55037 9404000 4040 1556894 3 55148 94
  • 串行端口“关闭”事件永远不会触发

    我正在使用nodeJSSerialPort用于连接计算机端口的包 关于套餐close event here https github com EmergingTechnologyAdvisors node serialport module
  • ptr->你好(); /* 与 */ (*ptr).hello();

    我正在学习 C 指针和 gt 操作员对我来说似乎很奇怪 代替ptr gt hello 一个人可以写 ptr hello 因为它似乎也有效 所以我认为前者只是一种更方便的方法 是这样还是有什么区别 gt 运算符是只是语法糖因为 ptr hel
  • jOOQ fetch 与 fetchResultSet 以及 Kotlin 中的关闭连接

    我使用 Kotlin 与 HikariCP 和 jOOQ 来查询我的数据库 我开始意识到这段代码按预期工作 获取行并随后关闭连接 class CountriesService private val datasource DataSourc
  • 正则表达式-如何在字符第一次出现时停止

    我正在尝试从标签中提取 src 值 到目前为止 我似乎能够提取 src 值和字符串中最后一个引号之间的字符串 String img border 0 src http i bookfinder com about booksellers l
  • matplotlib 桑基图中的连接流程

    我正在使用 matplotlibssankey功能 并且在连接两个流时存在问题 基本上 我只想连接流程Qab rekup到流的末尾Qzu rekup 参见屏幕截图 似乎很容易 但我仍然不知道如何管理它 Here s the screensh
  • 在开发系统上禁用 OutputCache

    我在 ASP net MVC 应用程序中使用 OutputCache 由于使用活动的 OutputCache 进行开发并不是很愉快 因此我想禁用开发系统 本地计算机和开发服务器 上的 OutputCache 做这个的最好方式是什么 这是一本
  • 将 df 转换为单独的观察结果[重复]

    这个问题在这里已经有答案了 我想将 df 从 计数 方法 案例数量 转变为 单独观察 方法 Example df lt dplyr tibble city c a a b b c c sex c 1 0 1 0 1 0 age c 1 2
  • 简化具有重复结果的嵌套 if/else?

    我正在尝试简化以下内容 function handleDirection src if src left if inverse tracker else tracker else if inverse tracker else tracke
  • 选择器的“完成”按钮的 Event_Handler

    我有一个包含项目列表的 xamarin 选择器 我想在 iPhone 上按下 完成 按钮和 Android 上按下 确定 按钮时删除选择器 我有删除选择器的代码 但我不知道 event Handler 可能是什么 Code Picker p
  • 安装蓝图时,环境上下文中不允许初始化程序错误

    我正在尝试使用 blueprintjs core我的项目中的库 但是 当我编译代码时 我收到许多这样的错误 node modules blueprintjs core dist common classes d ts 4 30 error
  • C# 中的 XML 多行注释 - 我做错了什么?

    根据本文 http blogs msdn com ansonh archive 2006 09 11 750056 aspx 可以获得多行 XML 注释 而不是使用 use 这是我对多行注释是什么以及我希望发生的情况的解释
  • Visual Studio 2005 清洁解决方案[重复]

    这个问题在这里已经有答案了 如果我有一个包含 10 个项目的解决方案 当我单击 清理解决方案 时 是否只是清理主启动项目解决方案中的 bin debug 或每个项目目录中的 bin debug 它针对当前选定的配置 例如调试 发布等 清理解
  • 在 ng2-select2 中使用 AJAX

    我的 angular2js 项目中有很多下拉菜单 我在用ng2 选择2 https github com NejcZdovc ng2 select2对于这些下拉菜单 在某些下拉列表中 我需要根据用户在 select2 搜索框中输入的字符串来
  • OpenAPI 规范 (YML/YAML):所有 $refs 替换或扩展为其定义(带有模式验证)

    我正在寻找一些解决方案或者一些脚本 可以帮助我通过模式验证替换 ref 或扩展其在 YML 文件中的定义 具体请看下面的例子 示例 使用 ref 输入 pets petId get summary Info for a specific p
  • 识别UIWebview的提交按钮点击

    我有一个带有多个按钮的 UIWebView 页面 需要识别点击的是哪个按钮UIWebView UIWebview加载内容的页面源码
  • 如何获取图片资源

    我应该如何获取imageButton的当前图像资源 我需要这样的东西 imageButton getImageResource 多谢 我认为你不能 当前的 API 不允许这样做 但如果你真的需要这个 你可以这样做 imageButton s
  • 为锦标赛系统分配奖品

    我正在寻找一种将数字分布到 x 个单位的方法 我什至不知道如何表达这个词 所以我举个例子 有一场锦标赛 总奖金为 1000 美元 我希望前 20 名获胜者 参赛者能够从中赢得一些东西 我需要一个数学算法 公式 将其分配给这些玩家 并让我有能