0

制作一个 android 应用程序来做一个彩票奖励系统。

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

例如,最贵的奖品是一辆汽车,而且只有一辆。但下一个更便宜的奖品将是一辆 50 cc 的小型摩托车,大约 10 辆。这份名单可以归结为铅笔和钢笔套装,其中有 800 名获奖者获得该奖项。

所以赢得铅笔和钢笔套装的机会比其他奖品要高得多。

我试图了解什么是最好的编码方式。我了解随机数生成器,甚至是一个更均匀分布真实随机数的更好的生成器。

我不清楚的是最好的方法是为每个奖项设置不同的频率。

有人可以为此指出正确的方向吗?

4

3 回答 3

2

计算“每个奖品的数量”的总和。

在 1 和这个总和之间选择一个随机数。

然后根据一些标准对奖品进行排序,并为每个价格关联一个范围(唯一的汽车将具有范围 [1;1])。

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

找到包含你的随机数的范围,就是这样。

于 2013-01-25T08:55:42.850 回答
1

最简单且最不容易出错的方式 => 将所有奖品放在一个数组中。每个奖品的投放次数应与给定类型的奖品一样多。然后生成一个最大为数组大小的随机数,并查看给定索引处的奖品是什么。

请注意,这仅考虑您知道给定用户将赢得奖品的情况。也许你应该首先给用户一个更大的机会不赢得任何东西,例如说你有 4000 个奖品,你希望用户以 1/40 的机会赢得奖品。所以生成一个随机数40*4000 = 160000,如果不小于4000用户什么都不中奖,否则他在生成的值对应的索引处中奖。

于 2013-01-25T08:43:57.783 回答
1
Random rand = new Random();
int pickedNumber = rand.nextInt(100);


if(pickednumber>99)

{
    pen or pencil
}

else
{
car
}

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

于 2013-01-25T09:26:50.143 回答