viewimage.php?id=3dafdf21f7d335ab67b1d1&no=29bcc427b28b77a16fb3dab004c86b6fdc843afe757eec57be7102ec3efadaa971b24ed52a1d8816dd89c793ec1e6a6e2a081072589960878fee12066e


저의 하찮은 뇌로는 이해할 수 없었기에 글로씁니다.


우선 이프로그램은 50%확률로 -1, 50%확률로 +1 을 더하는 프로그램입니다.

테스트 요소의 개수는 10000개 입니다.

모든 시행을 5000번 시행한 결과는 다음과 같습니다. ( 총 5천만번)


2234 : 1

2236 : 1

2238 : 8

2240 : 2

2242 : 4

2244 : 12

2246 : 11

2248 : 15

2250 : 18

2252 : 11

2254 : 7

2256 : 9

2258 : 4

2260 : 1

2262 : 3

2264 : 5

2266 : 2

2270 : 3

2272 : 2

2274 : 3

2276 : 4

2278 : 2

2280 : 1

2282 : 2

2284 : 3

2286 : 3

2288 : 2

2290 : 3

2292 : 2

2294 : 4

2296 : 1

2298 : 2

2300 : 2

2302 : 5

2304 : 3

2306 : 1

2308 : 2

2310 : 4

2312 : 2

2314 : 3

2316 : 4

2318 : 2

2320 : 3

2322 : 2

2324 : 2

2326 : 2

2328 : 3

2330 : 1

2332 : 3

2334 : 4

2336 : 1

2338 : 3

2340 : 4

2342 : 2

2344 : 1

2346 : 2

2348 : 1

2350 : 3

2352 : 3

2354 : 2

2356 : 2

2358 : 2

2364 : 1

2366 : 2

2368 : 5

2372 : 4

2374 : 1

2376 : 3

2378 : 1

2380 : 1

2386 : 1

2388 : 1

2398 : 1

2400 : 4

2402 : 6

2404 : 6

2406 : 9

2408 : 12

2410 : 10

2412 : 13

2414 : 10

2416 : 14

2418 : 12

2420 : 15

2422 : 20

2424 : 11

2426 : 9

2428 : 15

2430 : 20

2432 : 23

2434 : 35

2436 : 36

2438 : 35

2440 : 33

2442 : 28

2444 : 32

2446 : 28

2448 : 38

2450 : 47

2452 : 47

2454 : 59

2456 : 62

2458 : 75

2460 : 70

2462 : 78

2464 : 73

2466 : 106

2468 : 93

2470 : 131

2472 : 126

2474 : 154

2476 : 129

2478 : 160

2480 : 182

2482 : 191

2484 : 190

2486 : 239

2488 : 237

2490 : 314

2492 : 321

2494 : 312

2496 : 354

2498 : 358

2500 : 379

2502 : 335

2504 : 338

2506 : 325

2508 : 332

2510 : 304

2512 : 245

2514 : 228

2516 : 177

2518 : 204

2520 : 178

2522 : 165

2524 : 148

2526 : 124

2528 : 148

2530 : 122

2532 : 102

2534 : 100

2536 : 81

2538 : 62

2540 : 69

2542 : 63

2544 : 71

2546 : 55

2548 : 56

2550 : 45

2552 : 38

2554 : 32

2556 : 23

2558 : 25

2560 : 39

2562 : 29

2564 : 42

2566 : 24

2568 : 32

2570 : 17

2572 : 12

2574 : 13

2576 : 13

2578 : 15

2580 : 23

2582 : 10

2584 : 11

2586 : 14

2588 : 11

2590 : 13

2592 : 9

2594 : 9

2596 : 5

2598 : 4

2600 : 3

2602 : 3

2604 : 1

2606 : 2

2620 : 3

2622 : 1

2626 : 4

2628 : 2

2630 : 2

2632 : 4

2634 : 1

2636 : 1

2638 : 1

2640 : 1

2644 : 5

2646 : 2

2650 : 3

2652 : 2

2654 : 2

2656 : 2

2658 : 1

2660 : 5

2662 : 4

2664 : 1

2666 : 1

2668 : 2

2670 : 3

2672 : 3

2674 : 2

2676 : 4

2678 : 2

2680 : 1

2682 : 5

2686 : 5

2688 : 2

2690 : 1

2692 : 2

2694 : 3

2696 : 3

2698 : 4

2700 : 1

2702 : 4

2704 : 1

2706 : 5

2710 : 2

2712 : 2

2714 : 6

2716 : 1

2718 : 1

2720 : 4

2722 : 4

2724 : 2

2726 : 1

2728 : 3

2730 : 3

2734 : 1

2736 : 5

2738 : 4

2740 : 2

2742 : 4

2744 : 10

2746 : 7

2748 : 7

2750 : 17

2752 : 16

2754 : 11

2756 : 13

2758 : 7

2760 : 4

2762 : 3

2764 : 2

2766 : 1


의문이 드는 부분은 2244 ~ 2252, 2744~2756 부분입니다.

매번 시도할 때 마다 비슷한 위치에 저리 뭉치는데 이유를 모르겠네여 ;;

코드는 다음과 같습니다.


class pc_random

{

public:

    static void set_bio()

    {

        srand( time(NULL) );

    }

    static bool get_bio()

    {

        return rand() % 2;

    }

};

class object

{

public:

    size_t index;

    size_t left=0, right=0;

    size_t score=2500;

    void lr(bool lr)

    {

        if ( lr == false )

        {left++; score -= 1;}

        else

        {right++; score += 1;}

        if ( score < 1 ) score = 1;

        else if ( score >= 5000 ) score = 5000;

    }

};

class pc_test

{

public:

    std::vector<object> objects;

    pc_test()

        : objects(10000)

    {

        pc_random::set_bio();

        for ( int i = 0; i < 10000; i++ )

            objects[i].index = i;

    }

    void start()

    {

        for(auto& v:objects)

        {

            v.lr(pc_random::get_bio());

        }

    }

    void print()

    {

        std::vector<std::vector<int>> score(5000+1);

        for(auto& v:objects)

        {

            score[v.score].push_back(v.index);

        }

        for ( int i = 1; i < 5001; i++ )

        {

            if ( score[i].size() > 0)

            std::cout << i << " : " << score[i].size() << std::endl;

        }

    }

};

int main()

{

    pc_test test;

    for ( int i = 0; i < 5000; i++ )

    {

        test.start();

    }

        test.print();

        std::cout << std::endl;

    return 0;

}


ㅇㅅㅇ