Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何确定谁拥有阵列中的中奖彩票?_Javascript_Arrays - Fatal编程技术网

Javascript 如何确定谁拥有阵列中的中奖彩票?

Javascript 如何确定谁拥有阵列中的中奖彩票?,javascript,arrays,Javascript,Arrays,我有票系统。每个人都有不同的票。 例如: person[0] = 50; person[1] = 75; person[2] = 81; 0拥有1-50之间的票证 第1个人拥有51-126的车票 第二个人拥有127-208的票 然后进行抽签,并使用以下公式生成随机票证: totalTickets*(randomProcentage/100) 例如,公式给了我一张“52”的优胜者票。我不知道如何找到谁有中奖的票。如果所有的票都有相同的概率被选中,您可以使用以下方法: Math.floor(Ma

我有票系统。每个人都有不同的票。 例如:

person[0] = 50;
person[1] = 75;
person[2] = 81;
0拥有1-50之间的票证

第1个人拥有51-126的车票

第二个人拥有127-208的票

然后进行抽签,并使用以下公式生成随机票证:

totalTickets*(randomProcentage/100)

例如,公式给了我一张“52”的优胜者票。我不知道如何找到谁有中奖的票。

如果所有的票都有相同的概率被选中,您可以使用以下方法:

Math.floor(Math.random() * numberOfTickets);
var tickets = [52, 44, 33];
var index = Math.floor(Math.random() * tickets.length);
var winningTicket = tickets[index];
结果是中奖票

var tickets = [52, 44, 33];
var index = Math.floor(Math.random() * tickets.length);
var winningTicket = tickets[index];
关于评论。tickets数组表示彼此拥有的票证数量。下面的代码是查找获胜者索引的简单示例:

var tickets = [52, 44, 33];

// Sum the number of tickets
var numberOfTickets = 0;
for (var i = 0; i < tickets.length; i++) {
    numberOfTickets += tickets[i];
}

// Draw random number from 0 ... numberOfTickets
var winningTicket = Math.floor(Math.random() * numberOfTickets);

// Loop the tickets and check if the accumulated sum is higher or equal
// compared to the winning ticket. If it is, then we have our winner
var winner = null;
var accumulativeSum = 0;
for (var i = 0; i < ticket.length; i++) {
    accumulativeSum += ticket[i];
    if (accumulativeSum >= winningTicket) {
        winner = i;
        break;
    }
}
var票据=[52,44,33];
//票的总数
var numberOfTickets=0;
对于(变量i=0;i=winningTicket){
获胜者=我;
打破
}
}
门票:[10,20,30],赢取门票=5张。获胜者=0


门票:[10,20,30],winningTicket=11。Winner=1

您可以将票数相加并循环,直到总和大于或等于给定值

var票据=[50,75,81],
值=52,
指数=0,
总和=0;
票。一些(功能(a,i){
总和+=a;
指数=i;
返回和>=值;
});

控制台日志(索引)谁?检查它是否在数组中很简单,只是
arr.indexOf(52)
,但这怎么能告诉你谁赢了呢?我确实尝试在while循环中创建for循环,但是它没有成功,因为循环停止,正确的值没有给我赢家。哪一个是52?1个人应该赢,因为他有51到126张票。每张票的概率相同,但有些人有更多,有些人有更少,这就是问题。@TwitchClips有些人有更多,有些人有更少?一个人可以有更多的票吗?为简单起见,我建议您按一维数组排序票证列表,就像我所做的那样。如果票子有唯一的值,您可以使用中奖票子来确定之后哪个人拥有该票子。@TwitchClips more and less what?举例说明你正在努力实现的目标!我没有正确显示,但这些是票数,现在是票数,因此每个数组长度都有不同的获胜机会。@twitchlicps然后您可以在票数列表中循环,然后将票数和票数列表再循环一次以找到获胜者。