【发布时间】:2019-06-01 19:03:13
【问题描述】:
我有一个代码来滚动一个随机数,并根据他们的机会显示获胜者。
$data = array();
foreach($getAllUserTicketHistoryJson as $value){
$data[$value['user_id']] = number_format((float)($value['total_ticket'] / $getAllTicketRound * 100), 2, '.', '');
}
$array=$data;
function chance($input=array())
{
$number=rand(0,array_sum($input));
$starter=0;
foreach($input as $key => $val)
{
$starter+=$val;
if($number<=$starter)
{
$ret=$key;
break;
}
}
return 'Winner is '.$ret.'<br/>';
}
for($i=0;$i<3;$i++)
{
echo chance($array).'<br><br>';
}
这将给出如下输出。
Winner is 4
Winner is 3
Winner is 4
问题是,用户“4”在第一轮和最后一轮获胜两次。如何防止胜者双赢?
以及如何将每个获胜者插入数据库?
我的数据库是这样的
=========================================
id | Round | first | Second | third
=========================================
1 | 1 | 4 | 3 | 1
=========================================
我想将每个获胜者插入数据库“第一”、“第二”和“第三”。所以中奖ID不会翻倍,防止重复。
请帮忙。
【问题讨论】:
-
一旦彩票中奖,是否意味着在接下来的回合中被淘汰?
-
是的,比如用户4已经先赢了,那么用户4就不能再赢了