/* シフトレジスタ法による乱数発生 */

static int seed;

void _srandS(long seed0)
// 系列を設定する
{
	seed=seed0;
}

int randS(int base)
// rand()と同等のバラ付きの乱数発生ルーチン
// 速度は若干速い
// 系列は固定なので、変化させる時はsrandS()を使う
{
	seed=seed^(seed<<17);
	seed=seed^(seed>>15);
//	seed=seed^(seed>>13);	/* これでも結構良い結果が出る */
	return(seed%base);
}

#include	<iocslib.h>	// ONTIME()
#include	"anum.h"	// rand2()

void srandS()
/* randS()乱数を初期化する */
{
	_srandS(rand2(ONTIME()));
	/* 乱数系列の初期化に別の乱数を使うとは・・・ */
}
