실험 목적 : 로보코드의 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;
}
--------------------------------------------------