下限と上限の間の乱数を生成するテンプレート化されたクラスが必要です (両方の制限が負になる可能性があります)。これは私がこれまでに持っているものです:
template <typename T>
T RandomGenerator<T>::generate(T lowerLimit, T upperLimit)
{
static bool initialized = initialize();
return double(rand()) * (upperLimit - lowerLimit) / RAND_MAX + lowerLimit;
}
template <typename T>
bool RandomGenerator<T>::initialize()
{
srand(time(NULL));
}
int iVal = RandomGenerator<int>::generate(1, 10); //Generate integers between (and including) 1 and 10.
double dVal = RandomGenerator<double>::generate(-1, 1); //Generate doubles between (and including) -1 and 1.
これは double 値を正しく生成しますが、整数はオフです。ints と doubles の両方の普遍的なソリューションをコーディングする方法を知っている人はいますか? int と double に別の関数は必要ありません。