lem*_*mon 3 c++ random typedef
我有一个任意整数类型的typedef,例如
typedef unsigned long long myint;
Run Code Online (Sandbox Code Playgroud)
换句话说,我不知道它是如何定义的,但我可以保证它是一种基本类型.
我也有这种类型的变量实例
myint n;
Run Code Online (Sandbox Code Playgroud)
如何分配n可能是由支持的任何值的随机值myint?
简单地缩放rand()覆盖范围的结果myint将不合适,因为myint可能会比int类型更大,因此将存在无法访问的数字.
像下面这样的东西可以工作,但似乎相当不优雅和低效:找到in myint和in中的位数int,然后连接一堆rand()数字直到myint填充.
使用C++ 11 <random>库,uniform_int_distribution可以为您提供任何整数类型:
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution<myint> dis(
std::numeric_limits<myint>::min(),
std::numeric_limits<myint>::max());
myint num = dis(gen);
Run Code Online (Sandbox Code Playgroud)
随着无符号类型,你可以使用默认的构造函数uniform_int_distribution,这给范围0来numeric_limits<T>::max().