2

私は約 100 万件のレコードを持っています。魔女は 24 日間 (1 日 1 回) 質問に答えるためのものです。

私が達成しようとしているのは、1 日を通してすべての正しい答えを収集し、宝くじの選択を行うことです。たとえば、購読者が 24 の答えすべてに正しく答えた場合、1 つしか正しく答えなかった購読者よりも選択される可能性が高くなります。答えてください。

これは純粋なT-SQLではなく、より快適に使用できるようになったため、Linq-to-Sqlを使用していますが、これはT-SQLへのポーターになる予定ですが、 LinqPadはそれで私を助けます。これまでのところ:

// all correct answers id's
var correct = from a in JK_ChallengeAnswers
              where a.correct
              select a.challenge_answer_id;

// all correct answers 
var query = from cr in JK_ChallengeResponses
            where correct.Contains(cr.challenge_answer_id)
            select cr;

query.Count().Dump(); // 978144

var random = new Random();
int pos = random.Next(query.Count()); // random select

query.Skip(pos).Take(1).Dump(); // get one...

これは簡単です...そしてそれは直線的で、「チケット」アプローチはありません。ここでは、1つの質問に答えた人が、24すべてに答えた人の勝率の正確なパーセンテージとして...

宝くじのアプローチを試すにはどうすればよいですか?次のステップは何ですか?

コードを表示する必要はありません。手順だけを取得できます。何らかの方法で取得していないためです。

4

2 に答える 2

1
  1. 宝くじの表を作成します。
  2. 購読者ごとに、正解した質問ごとに 1 回、エントリを表に入れます。
  3. そのテーブルからランダムにレコードを選択します。
于 2012-12-25T12:14:21.103 に答える
0

正解したすべての人の名前を含むビューを作成します。次に、乱数ジェネレーターを使用して、ID が乱数と一致する人を選択できます。さらにヘルプが必要な場合は、私に尋ねてください。

編集

私にとって、宝くじのアプローチはすでにあなたのために働いています. なぜなら、各人は24日間毎日答えを推測できるからです. つまり、正しい答えを指す外部キーを使用して、テーブルに 24 個の答えがあることを意味します。こうすることで、データベースに 24 個のエントリを送信した場合に正しい答えを得る可能性が高くなります。これにより、私のアプローチが機能します。

これがどのように機能するかについて別のアイデアがあれば教えてください。

于 2012-12-25T12:12:10.990 に答える