gmp随机数实例,gmp生成随机数
实例一:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
#include <iostream> #include <cstring> #include <ctime> #include <gmpxx.h> int main() { clock_t time = clock(); gmp_randstate_t grt; gmp_randinit_default(grt); // 初始化随机数变量 gmp_randseed_ui(grt, time); // 种子赋值 mpz_t key; mpz_init(key); // 初始化整数 // 生成0到 (2^n)-1(含)范围内的均匀分布的随机整数 。 mpz_urandomb(key, grt, 16); gmp_printf("-- 16 bit:\t%Zd\n", key); // 释放占用的内存空间 gmp_randclear(grt); mpz_clear(key); /** * 输出: -- 16 bit: 23086 */ } |
实例二:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
#include <iostream> #include <cstring> #include <ctime> #include <gmpxx.h> int main() { // 有时为正整数,有时为负整数 mpz_class ran; gmp_randclass rr(gmp_randinit_default); rr.seed(std::time(nullptr)); ran = rr.get_z_bits(125); long int _random = ran.get_ui(); printf("-- 125 bit:\t%d\n", _random); ran = rr.get_z_bits(256); _random = ran.get_ui(); printf("-- 256 bit:\t%d\n", _random); ran = rr.get_z_bits(512); _random = ran.get_ui(); printf("-- 512 bit:\t%d\n", _random); ran = rr.get_z_bits(1024); _random = ran.get_ui(); printf("-- 1024 bit:\t%d\n", _random); /** * 输出: -- 125 bit: 1227284511 -- 256 bit: -840074903 -- 512 bit: -1613957681 -- 1024 bit: 1234011535 */ } |