如何在乐透系统android / java中随机选择不同数量的奖品

时间:2013-01-25 08:34:50

标签: android random

让Android应用程序进行彩票奖励系统。

我想随机选择奖品获奖者。但每个奖品的金额不同。它们目前存储在数据库中,分为三列,第一列是索引ID,自动递增,第二列是奖品名称,第三列是每个奖品的数量。

例如,最昂贵的奖品是汽车,而且只有一辆。但下一个更便宜的奖品将是一个50cc的小型踏板车,其中大约10个。这个名单下载到一个铅笔和一套笔,其中有800名获奖者。

所以赢得铅笔和钢笔套装的机会远高于其他奖品。

我正在尝试了解编码此代码的最佳方法。我理解随机数生成器,甚至更好地分配真正的随机数。

我不清楚的是以每种奖品的不同频率进行此操作的最佳方式。

有人能指出我正确的方向吗?

3 个答案:

答案 0 :(得分:2)

计算每个奖项的数量总和"。

选择1和此总和之间的随机数。

然后根据某些标准订购奖品并将范围与每个价格相关联(唯一的汽车将具有范围[1; 1])。

确保范围不会相互重叠。每个范围的大小必须等于可用价格的数量。

找出保留随机数的范围及其确定范围。

答案 1 :(得分:1)

最简单且最不容易出错的方式=>把所有的奖品都放在一个数组中。每个奖项的放置次数应与给定类型的奖品一样多。然后生成一个最大为数组大小的随机数,看看给定索引的奖金是多少。

请注意,这只会考虑您知道给定用户将赢得奖品的情况。也许你应该首先为用户提供更大的机会不赢取任何东西,例如说你有4000个总奖金,并且你希望用户以1/40的机会赢得奖品。因此,生成一个最大为40*4000 = 160000的随机数,如果该数字不小于4000,则该用户不会获胜,否则他将在与所生成的值对应的索引处赢得奖品。

答案 2 :(得分:1)

Random rand = new Random();
int pickedNumber = rand.nextInt(100);


if(pickednumber>99)

{
    pen or pencil
}

else
{
car
}

我给你举个例子,你必须为滑板车添加更多条件或者你想在彩票上添加任何东西。