기본 질문은 위의 예와 같습니다.
내가 얻을 때까지 6면 주사위를 굴려 보겠습니다. a 4 그리고이 "게임"을 10 번하십시오.
이제 4를 얻는 데 필요한 던지기 수에 대한 매우 기본적인 확률 분포를 얻고 싶습니다. 2 게임에서 나는 단지 1 번 던지기, 4 번 3 번 던지기, 3 번 4 번 던지기, 그리고 1 번 경기에서 78 번 던지기 만했다. 그래서 게임을하기 전에 얼마나 많은 던지기가 필요한지를 결코 알지 못한다. 게임은 끝없이 계속 될 수있다.
레코드 보관을 단순화하기 위해 벡터의 위치/인덱스가 4를 얻는 데 필요한 throw 수를 나타내며 위치 값에 얼마나 많은 수의 throw가 필요한지 알려줍니다. 그래서 이전 예제를위한 그런 벡터는 sth처럼 보일 것입니다. {0, 2, 0, 4, 3, 0, [다른 72 개의 제로 (0), 1}.
C++에서 어떻게 작성합니까?벡터의 위치 값을 변경하면 해당 위치가 자동으로 생성되고 필요한 경우 벡터 범위가 증가합니다
(나는 전에 비슷한 질문이 있었음에도 불구하고 일치하는 질문을 찾을 수 없었을 것입니다.) 또한 C++을 배우기 시작 했으니까요. 't은 솔루션을 이해하는 것이 필요합니다.) OP로 std::vector
로 변경
C++-Code/Pseudocode
vector<int> recordvec = {0};
for (1 to 10){
game();
recordvec[game.throwsneededtowin()]=recordvec[game.throwsneededtowin()] +1
//How to make sure that I don't get an out-of-range error here if game.throwsneededtowin() is e.g. 1464?
}
print recordvec
사용할 수있는 요청 'vector :: push_back'은 위치를 증가시키고 vector [i] = something은 값을 변경합니다 –
답해 주셔서 감사합니다.하지만 push_back을 사용하여 벡터 크기를 특정 위치 (단지 하나가 아닌)로 증가시킬 수 있습니까? 첫 번째 게임 후에 game.throwsneededtowin()이 = 23 인 경우 예제 23에서 인덱스 23이 포함되도록 벡터 범위를 어떻게 변경합니까? 한 번에 값을 할당하고 벡터 범위를 늘릴 수있는 방법이 있습니까? 내가 sth라고 쓰면. recordvec [23] ++와 23 위치는 recordvec에 대해 아직 존재하지 않습니다. 자동으로 추가되고 0으로 설정된 다음 1 씩 증가합니다. – someonesomewhere
예'vector.push_back ("value");을 사용합니다. –