#include <iostream>
#include<cstdlib>
#include<ctime>
#define RPT 3*1000*1000*10
#define RPT_J 2
int main(){
    int number[1000]={0};
    for(auto nmbr = 0; nmbr<1000; nmbr++)
        number[nmbr]=0;
    long long i=0;
    long long j=0;
    long long digit_1 = 0;
    long long digit_2 = 0;
    long long digit_3 = 0;
    int z=0;
    double digit_prob[3];

    for(j=0; j<RPT_J;j++)
    {
        for(i=0; i<RPT;i++)
        {
            int m=rand()%3+1;
            if(m==3)
            {
                z=(int)rand()%900+100;
                digit_3++;
            }
            else if(m==2)
            {
                z=(int)rand()%90+10;
                digit_2++;
            }
            else if(m==1)
            {
                z=(int)rand()%10;
                digit_1++;
            }
            number[z%1000]++;
        }
        digit_prob[1 -1] = (100.d*digit_1/static_cast<double>(i*(j+1)));
        digit_prob[2 -1] = (100.d*digit_2/static_cast<double>(i*(j+1)));
        digit_prob[3 -1] = (100.d*digit_3/static_cast<double>(i*(j+1)));
        std::cout<<"J: "<<j+1<<std::endl;
        std::cout<<"1 digit : "<<digit_prob[1 -1]<<" %"<<std::endl;
        std::cout<<"2 digit : "<<digit_prob[2 -1]<<" %"<<std::endl;
        std::cout<<"3 digit: "<<digit_prob[3 -1]<<" %"<<std::endl;
    }
    for(auto nmbr = 0; nmbr<10; nmbr++)
        std::cout<<nmbr<<": "<<100.d*static_cast<double>(number[nmbr])/(i*j)<<" %"<<std::endl;
    return 0;
}
