#ifndef _MATH_TOOL_
#define _MATH_TOOL_

#include "mt19937ar-cok.h"

namespace HPL{
namespace MathTool{

/** 指定した範囲のランダム数値を出力する
  *
  */
template<class T>
inline T nextRandom(T minValue, T maxValue) {
	
	T val = static_cast<T>(genrand_real1() * (maxValue - minValue) + minValue);
	return val;
}

/** ランダムの種を設定。
  * リプレイを残す場合、再生時に保存しておいた種数値を与えると良い。
  * @param[in] seed		種数値
  */
void setSeed( long seed );

/** 種を時間から自動取得
  * @retval 時間をlongに直したもの
  */
long getRandomSeedFromTime();

template<class T, class S>
inline S get_Sgn( T target ) {
	S result = 0;
	if( target > 0 ) {
		result = static_cast<S>(1);
	} else if( target < 0 ) {
		result = static_cast<S>(-1);
	}
	return result;
}

}
}
#endif
