练习17.28
编写函数,每次调用生成并返回一个均匀分布的随机unsigned int。
解答:
#include <random>
#include <iostream>
#include <ctime>
using namespace std;
unsigned int
random_uint(){
uniform_int_distribution<unsigned> u(0,9);
default_random_engine e(time(0));
return u(e);
}
int main(){
cout << random_uint() << endl;
}
练习17.29
修改上一题中编写的函数,允许用户提供一个种子作为可选参数。
解答:
#include <random>
#include <iostream>
using namespace std;
unsigned int
random_uint(size_t seed){
uniform_int_distribution<unsigned> u(0,9);
default_random_engine e(seed);
return u(e);
}
int main(){
cout << random_uint(-99) << endl;
}
练习17.30
再次修改你的程序,此次在增加两个参数,表示函数允许返回的最小值和最大值。
解答:
#include <random>
#include <iostream>
#include <ctime>
#include <climits>
using namespace std;
unsigned int
random_uint(size_t seed, unsigned min, unsigned max = UINT_MAX){
uniform_int_distribution<unsigned> u(min, max);
default_random_engine e(seed);
return u(e);
}
int main(){
cout << random_uint(100000000, 10, 100) << endl;
}