c++中使用GMP的随机数生成
Random number generation in c++ using GMP
在java中,随机数可以像一样
protected final static Random RANDOM = new Random(System.currentTimeMillis());
在c++中使用GMP库如何可能生成随机数?
我使用了类似的代码
gmp_randstate_t s;
unsigned long seed;
seed = time(NULL);
gmp_randinit_default(s);
gmp_randseed_ui(s, seed);
mpz_class ran;
gmp_randclass rr(s);
ran =rr.get_z_bits(125);
long int random=ran.get_ui();
但是我没有得到随机数。
请帮帮我。
首先,没有采用gmp_randstate
实例的gmp_randclass
构造函数,所以您的代码没有为我编译。建议使用gmp_randinit_default
来构造gmp_randclass instance
,如下所示:
gmp_randclass rr(gmp_randinit_default);
代码的第一部分是为gmp_randstate_t s
设定种子,但在代码的第二部分中(在上述更改之后)不使用随机状态变量s
。除非以其他方式设定种子,否则默认的GMP随机数生成器始终以相同的种子开始,这意味着每次运行程序时都会生成相同的序列的随机数。可以使用gmp_randclass::seed
函数为gmp_randclass
的实例设定种子。
以下代码与您的代码类似,但根据当前时间为随机数生成器种子。
mpz_class ran;
gmp_randclass rr(gmp_randinit_default);
rr.seed(time(NULL));
ran =rr.get_z_bits(125);
long int random=ran.get_ui();
请注意,如随机状态种子中所讨论的,对于随机数生成器种子,使用低分辨率当前时间通常是一个糟糕的选择。
相关文章:
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 整数不会重复超过随机数
- if数组上的随机数
- 在将数字随机生成为数组期间从内存输出随机数的数组
- 半随机数生成C++
- 程序在尝试猜测它选择的随机数时进入无限循环?
- 使用 GMP 的 while 循环出现问题
- 有没有办法在 c++ 中同时生成随机数?如果没有,是否有解决方法?
- 具有随机数的二维数组不会更改
- 随机数未达到限制
- 有没有一个 c++ gmp 库函数与 python gmpy2 库 divm(..) 函数相同?
- 我想生成许多矩阵并用随机数填充它
- <random>在实践中应该实际使用哪个随机数引擎? std::mt19937?
- 制作具有平均值的随机数生成器
- 为什么 rand 不在我的代码中生成随机数?
- 使用 MinGW 在 Windows 上安装 GMP 时出错
- Diffie-Hellman密钥交换的C GMP随机数生成
- c++中使用GMP的随机数生成
- 如何使用GMP生成一定范围内的随机数
- C++GMP生成随机数