只要执行此代码,就会得到相同的结果。我无法获得随机值。
temp的值始终显示为6400306986398558324。(lambda = 256。)
mpz_t group_size,temp;
mpz_init(group_size);
mpz_init(temp);
gmp_randstate_t state;
gmp_randinit_mt (state);
mpz_urandomb (temp, state,lambda);
mpz_nextprime (group_size, temp);
printf("temp : %ld \n",mpz_get_ui(temp));
printf("Group Size : %ld \n",mpz_get_ui(group_size));
答案 0 :(得分:0)
您需要为状态设置种子。来自official documentation:
功能:
void gmp_randseed (gmp_randstate_t state, const mpz_t seed)
功能:
void gmp_randseed_ui (gmp_randstate_t state, unsigned long int seed)
以下是您的代码示例(在现实世界中并没有真正用处,因为time(NULL)
将在一秒钟内返回相同的结果)。
...
gmp_randinit_mt (state);
gmp_randseed_ui(state, time(NULL))
mpz_urandomb (temp, state,lambda);
...