#include <mcl/fp.hpp>
#include <mcl/gmp_util.hpp>
#include <mcl/ecparam.hpp>
#include <cybozu/random_generator.hpp>
#include <map>
#include <mcl/fp.hpp>
typedef mcl::FpT<> Fp;

typedef std::map<std::string, int> Map;

int main(int argc, char *argv[])
{
	cybozu::RandomGenerator rg;
	const char *p = mcl::ecparam::secp192k1.p;
	if (argc == 2) {
		p = argv[1];
	}
	Fp::init(p);
	Fp x;
	printf("p=%s\n", p);
	Map m;
	for (int i = 0; i < 10000; i++) {
		x.setRand(rg);
		m[x.getStr(16)]++;
	}
	for (Map::const_iterator i = m.begin(), ie = m.end(); i != ie; ++i) {
		printf("%s %d\n", i->first.c_str(), i->second);
	}
}