65,186
社区成员




#include <cmath>
#include <iostream>
using namespace std;
int pow10(int n)
{
int ret=1;
for(int i=0;i<n;++i)
{
ret*=10;
}
return ret;
}
int getplaces(int a)
{
int n=1;
while(a/10)
{
++n;
a/=10;
}
return n;
}
unsigned int k;
unsigned int next=1;
void srandom(unsigned int seed)
{
next=seed;
k=getplaces(next);
}
double random()
{
double r=(double)next/pow10(k);
next=((next*next)/pow10(k/2))%pow10(k);
//next=fmod((double)(next*next)/pow10(k/2),pow10(k));
return r;
}
void test(const int n)
{
int a[10]={0};
for(int i=0;i<n;++i)
{
double r=random();
int j=floor(r*10);
a[j]++;
}
for(int i=0;i<10;++i)
{
cout<<a[i]<<endl;
}
}
int main()
{
srandom(5466);
test(5000);
return 0;
}