2012-12-25 2 views
2

약 1 백만 개의 레코드가 있으며, 마녀는 24 일 (1 일 1 회) 동안 질문에 대답합니다.복권 접근법

내가이 일에 걸쳐 모든 정답을 수집하고 가입자가 모두 24 답을 대답하면 정확하게 그/그녀가보다 선택의 높은 확률을 가지고 다음 복권 선택, 같은 을한다 달성하기 위해 노력하고있어 하나의 대답에만 올바르게 응답 한 가입자는입니다.

내가 사용하고 나는이 T-SQL에 포터 될 것에도 불구하고, 오히려 순수한 T-SQL보다 그것을 사용의 더 편안 하락으로 Linq에-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... 

이 똑바로 앞으로 ... 그리고는 선형이다 :, 그래서 여기에 지금까지있어 무엇 모두 24 명에게 답변 한 사람 중 ...

어떻게하면 복권 접근 방식을 시도할까요?, 내 다음 단계는 무엇입니까?

코드를 표시 할 필요가 없습니다. 그걸 얻을 수는 있지만, 단계 만 수행하면 어떻게 든 그들을 얻지 못할 수 있습니다.

+1

직접적인 가중치입니까? 예를 들어 24 개의 답은 24 번의 기회를 의미합니까? 그렇다면 올바른 것으로 보입니다. – SWeko

+0

현재 접근 방식에있어 문제점이 있습니까? 24 개의 대답을 가진 사람은 하나의 대답을 가진 사람보다 24 시간 더 좋은 기회를 갖습니다. –

+0

@SWeko 정확히 내가하려고하는 것, 24 개의 답변에는 24 개의 기회가 있어야합니다! – balexandre

답변

0

정확하게 대답 한 모든 사람의 이름으로보기를 만듭니다. 그런 다음 난수 생성기를 사용하여 임의의 숫자와 일치하는 사람을 선택할 수 있습니다. 도움이 더 필요하면 나 한테 물어봐. 각 사람이 24 일 동안 매일 답을 추측 할 수 있기 때문에 나에게

편집

는 추첨 방식은 이미 당신을 위해 노력하고 있습니다. 그것은 정답을 가리키는 외래 키를 가지고 테이블에 24 개의 해답을 가지고 있음을 의미합니다. 이렇게하면 24 개의 항목을 데이터베이스에 제출하면 올바른 대답을 얻을 수있는 좋은 기회가 생깁니다. 이것은 내 접근 방식을 작동하게 만들 것입니다.

이것이 어떻게 작동하는지 다른 아이디어가 있다면 알려주십시오.

+1

정확한 숫자로 가중치를 부여해야합니다. –

+0

확인. 그것은 복권 접근법에 의한 것임에 틀림 없습니다. 아프게 편집하십시오. – joncodo

+0

생각해 보면,'JK_ChallengeResponses'에서 각 답변마다 하나의 행과 일치하는 올바른 기능을 가지고 있으며, 정답 만 일치하면 필자에게 필요한 것을 정확하게 제공합니다. 열어 주셔서 감사합니다 :) – balexandre

1
  1. 복권 티켓 표를 만듭니다.
  2. 각 구독자는 올바른 질문을 한 번씩 테이블에 입력하십시오.
  3. 해당 테이블에서 임의로 레코드를 선택하십시오.