我在我的基于 Web 的应用程序中制作了一个彩票系统,所以它是用 JavaScript 编写的,但我的问题更数学化,所以请随意用其他语言编写代码片段。
我想以一种自然的方式将彩票奖池分配给中奖者,例如:
var pot = 1000;
var tickets = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20];
tickets = shuffleArray(tickets); //shuffle tickets for winners
//first half wins something (2 should be changeable)
var winners_count = Math.ceil(tickets.length / 2);
在这种情况下,我需要一种方法将整个底池分配给 10 名获胜者,其中第一名获得最多,最后一名(第 10 名)获得最少。
for(var i=0; i<winners_count; i++){
var ticket = tickets[i];
//formula to determine percentage of pot to gain needed.
}
示例结果:(只是为了向您展示它需要去哪里,而不是实际匹配)
1 - 22%
2 - 18%
3 - 14%
4 - 12%
5 - 10%
6 - 8%
7 - 7%
8 - 5%
9 - 3%
10 - 1%
我的数学很差,一些指针和/或代码片段会帮助我解决这个问题。
编辑
Fabien Roualdes 的解决方案:http: //jsfiddle.net/LB8YU/1/