0

宝くじの当選システムを行うアンドロイドアプリを作っています。

賞品の当選者をランダムに選びたい。ただし、各賞の金額は異なります。それらは現在、データベースに 3 つの列として格納されています。1 つ目はインデックス ID、自動インクリメント、2 つ目は賞品の名前、3 つ目はこれらの各賞品の数です。

たとえば、最も高価な賞品は車で、1 台しかありません。しかし、次に安い賞品は小型の 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 に答える