inline T generate_uniform_real(Engine& eng, T min_value, T max_value) { if(max_value / 2 - min_value / 2 > (std::numeric_limits<T>::max)() / 2) return 2 * generate_uniform_real(eng, min_value / 2, max_value / 2); typedef typename Engine::result_type base_result; return generate_uniform_real(eng, min_value, max_value, boost::is_integral<base_result>()); }
bool ScriptInterface::MathRandom(double& nbr) { if (m->m_rng == NULL) return false; nbr = generate_uniform_real(*(m->m_rng), 0.0, 1.0); return true; }
inline T generate_uniform_real(Engine& eng, T min_value, T max_value) { typedef typename Engine::result_type base_result; return generate_uniform_real(eng, min_value, max_value, boost::is_integral<base_result>()); }