0

申し訳ありませんが、質問を検索しますが、正しい言い方がわかりません。暗算に大きな問題があり、解決策を考えようとしています。リストに名前を追加するギルド用のプログラムを構築しようとしています。このリストには、人の名前とラッフルへの寄付の数を保持する各エントリの並列構造体があります。

私はすべての名前を無作為化し、人々が入れた寄付の量​​によって結果にプラスの影響を与えたい. 以前に無作為化を行ったことがありますが、オッズにわずかな影響を与える必要はありませんでした。お願い助けて?コードを投稿しますが、現時点ではランダム化はありません。ただし、他のものを提供できます。

各ユーザーのエントリを保持する構造体を作成しました。

    public struct pEntry
    {
        public string Name;
        public int Entries;
    }

すべてのエントリを保持するリストを作成しました。

    public List<pEntry> lEntries = new List<pEntry>();

ランダム化が、彼らが行ったエントリ (寄付) の数によってプラスの影響を受けることを望んでいます。これには上限はありませんが、必要に応じて .. 255 のようにすることもできます。さらにいくつかを選択します。このプログラムは、複数のラッフルなどに使用されますが、すべて同じシステムを使用します。

4

1 に答える 1

2

どれだけの寄付が当選の可能性を高めるかを知る必要があります。寄付していない人よりも 1 = 1 チャンスが多いのでしょうか? ベースとボーナスがあれば、「チャート」を生成し、トップ ナンバーを確認し、乱数を生成するだけです。その後、その人を削除するか、必要な割合でチャンスをリセットし、チャンス リストを再生成して、新しい番号を生成できます。

たとえば、1 寄付単位でその人に 10% のチャンスを与えたい場合、すべてのギルドのリストを作成すると、各人は 10 "ロット" + 1 寄付単位ごとに 1 ロットを取得します。したがって、3 人がいる場合は、次のようになります。

  • アンは 5 単位の寄付を行いました
  • トムは 2 単位の寄付を行いました
  • ボブは何も与えなかった

結果のリストは次のようになります。

  1. アンロット数: 10 (ベース) + 5 (寄付) = 15 ロット
  2. トムのロット数: 10 (ベース) + 2 (寄付) = 12 ロット
  3. ボブのロット数: 10 (ベース) + 0 (寄付なし) = 10 ロット

次に、1 から 37 (15 + 12 + 10) までの数字を生成して勝者を決定します。

それぞれの寄付がオッズを改善する (ロットを増やす) べきものを見つけ出し、範囲の構築を開始して数字を生成することができます。

于 2013-04-27T00:49:01.503 に答える