이 함수를 사용하여 게임 Tron의 2 차원 격자에서 에이전트에 의해 이동하도록 0,1,2,3 숫자의 무작위 순열을 생성합니다. 때문에 임의의 숫자가 시간에 따라 달라진다는 사실에 두 개의 에이전트가 연속 이동을 한 경우C++ 무작위 에이전트 이동이 동일합니다.
- 들이 같은 이동합니다
srand(time(nullptr)); vector<int> permutationMoves = { 0, 1, 2, 3 }; auto currentIndexCounter = permutationMoves.size(); for (auto iter = permutationMoves.rbegin(); iter != permutationMoves.rend(); iter++, --currentIndexCounter) { int randomIndex = rand() % currentIndexCounter; if (*iter != permutationMoves.at(randomIndex)) { swap(permutationMoves.at(randomIndex), *iter); } }
는 그러나, 나는 두 가지 문제가 있습니다.
- 에이전트가 서로 후 여러 라운드를 수행하는 경우 두 에이전트의 이동은 이전 게임의 이동과 동일합니다. 결국 그리드는 항상 같고 1 명의 에이전트가 대부분의 경우 게임의 95 % -100 %를 획득하게됩니다.
모든 도움을 주실 수 있습니다. 감사합니다. 당신은 씨앗마다 다시 설정하라는된다
srand(time(nullptr));
:에
, 여기에 코드를 붙여주세요 있는지 확인합니다. – amchacon
프로그램 시작시''srand()를 한 번만 호출하십시오. – Barmar
여기 [https://channel9.msdn.com/Events/GoingNative/2013/rand-Considered-Harmful] 여기에 남겨 두겠습니다 ... –