2013-12-12 4 views
1

나는 100 명을 기록했다. 각 사람은 다양한 수의 티켓을 구매했습니다. 데이터는 json에서 나에게 전달됩니다. 그래서 그것은 "John Smith 100 티켓, Jane Doe 55 티켓 등"과 같을 것입니다. 각 티켓에 동일한 확률을 부여한 100 개의 당첨 티켓을 무작위로 선택해야합니다. 피셔 Yates 셔플을 사용하는 방법을 알아 냈습니다. 각 티켓 소유자에게 동일한 기회를주기 위해 데이터를 그룹 해제 할 수 없습니다. 55 개의 Jane 티켓과 100 개의 JOHN 티켓 등을 만들어 셔플하고 첫 번째 100 개만 선택해야합니다. 감사합니다.가중치가 다른 무작위 복권

+0

시도한 것과 작동하지 않는 것의 일부 샘플 코드를 게시하십시오. – portforwardpodcast

+0

피셔 Yates가 데이터를 섞어 놓습니다 .http : //jsfiddle.net/Gamedevtuts/pvVhy/1/ – JesseRules

+0

나는 John Doe에게 100 장의 티켓을 받고 100 장의 존 도우 카드를 만드는 방법에 대한 예제가 없습니다. 55 마리의 Jane Doe 카드를 섞어서 섞는다. – JesseRules

답변

1

사람들 목록을 뒤섞기 대신 각 티켓에 대해 각 사람 에 대해 하나의 요소가있는 배열을 만들고 해당 배열에서 임의로 그립니다.

그래서 대신 :

['John Smith', 'Jane Doe', ...] 

당신이 가진 것 :

['John Smith', 'John Smith', 'John Smith', ..., 'Jane Doe', 'Jane Doe', ...] 

은 물론, 더 많은 메모리 효율적인 방법이 있습니다, 그러나 이것은 시작이다.

+0

이 작업을 수행하는 방법에 대한 샘플 코드가 있습니까? JSON의 Qty 값을 기준으로 배열에 100 개의 항목을 만듭니다. 이것은 내가 가려고했던 곳입니다. 응답 해 주셔서 감사합니다. – JesseRules

+0

JavaScript로는 아주 기본적인 작업입니다. 나는 너에게 대답을 먹이로 숟가락으로 가지 않을거야. 너 한테 기회를 줘. 'for' 루프를 사용하십시오. –

+0

문제 없습니다. 나는 여기서 구글을 찾을 수있다. 나는 코딩에 익숙하지 않고이 문제에 매달렸다. 감사. – JesseRules