std::mt19937 r(?);
std::uniform_int_distribution<> d(0, 100);
for(int i=0;i<100;++i){
d(r);
}
としないと正しく分布しないですか?

std::mt19937 r(?);
for(int i=0;i<100;++i){
std::uniform_int_distribution<> d(0, 100);
d(r);
}
これでは駄目ですか?