로보코드 실험





실험 목적 : 로보코드의 Round 가 시작할 때 로봇의 위치는 랜덤하다. 그래서 1 대 1 경기에서 두 로봇의 거리가 대충 어느 정도 될 것 인지 시뮬레이션 해 보았다.



작년에 배틀 필드를 1000 *800 으로 했다고 해서 그 기준으로 우선 실험을 해 보았다.
우선 평균은 469 로 나왔다. 그리고 시작위치가 420 ~ 520 일 때는 15.12% 의 확률을 보였다.

평균 거리 : 469
420 ~ 430 : 13883
430 ~ 440 : 15612
440 ~ 450 : 15491
450 ~ 460 : 15345
460 ~ 470 : 15315
470 ~ 480 : 15269
480 ~ 490 : 15246
490 ~ 500 : 15183
500 ~ 510 : 15072
510 ~ 520 : 14861
420 ~ 520 : 151277

범위를 370 ~ 570 으로 늘려 보면 30.18% 를 보인다.
평균 거리 : 469
370 ~ 380 : 15503
380 ~ 390 : 15334
390 ~ 400 : 15355
400 ~ 410 : 15407
410 ~ 420 : 15720
420 ~ 430 : 15708
430 ~ 440 : 15628
440 ~ 450 : 15416
450 ~ 460 : 15521
460 ~ 470 : 15386
470 ~ 480 : 15478
480 ~ 490 : 15274
490 ~ 500 : 15145
500 ~ 510 : 15079
510 ~ 520 : 15035
520 ~ 530 : 14798
530 ~ 540 : 14665
540 ~ 550 : 14538
550 ~ 560 : 14298
560 ~ 570 : 14066
370 ~ 570 : 303354

참고적으로 320 ~ 620 : 444064 (44.41%) 를 보인다. 너무 넓다. 너무 의미 없는 데이터 같기도 하다.

다음은 800* 800 사이즈. 그냥 참조적인 값이라고 생각하자.
평균은 415, 416을 왔다갔다 한다.
365 ~ 415 : 172169 (17.22%)
315 ~ 515 : 340352 (34.03%)

기본 사이즈인 800*600 사이즈
평군은 365, 366 를 왔다 갔다 한다.
315 ~ 415 : 195816 (19.58%)
265 ~ 465 : 382264

조금 큰 사이즈인 1000* 1000 사이즈
평균은 519
470 ~ 570 : 138020 (13.80%)
420 ~ 620 : 274888 (27.49%)



코드
--------------------------------------------------

#include <iostream>
#include <string>
#include <cstdlib>
#include <ctime>
#include <vector>
#include <utility>
#include <cmath>


using namespace std;

int main()
{

string str;
srand(time(NULL));
long long sum = 0;

int arrayStatistics[10] = { 0 };
int numRange = sizeof(arrayStatistics) / sizeof(arrayStatistics[0]);


for( int i =0; i < 1000000 ; i++)
{
int x1 = rand()%1000;
int y1 = rand()%800;

int x2 = rand()%1000;
int y2 = rand()%800;

int distance = (int)sqrt ( (double)(x1-x2)*(x1-x2) + (y1-y2)*(y1-y2) );

if ( distance > 420 && distance < 520 )
{
int temp = distance - 420;
arrayStatistics[ temp/ numRange ] ++;
}

sum += distance ;
}

cout<< "평균 거리 : " << (int) sum / 1000000 << endl ;

sum = 0;
for (int i=0 ; i< numRange ; i++)
{
sum += arrayStatistics[i];
cout << 420+i*10 <<" ~ " << 420+(i+1)*10 <<" : " << arrayStatistics[i] << endl;
}
cout << "420 ~ 520 : " << sum << endl;

system("PAUSE");
return 0;
}

--------------------------------------------------
by 한밀 | 2004/05/24 00:52 | 프로젝트
<< 이전 다음 >>