C++ 生成相同的随机整数
我想生成一个n字节的随机整数z,这样C++ 生成相同的随机整数,c++,gmp,C++,Gmp,我想生成一个n字节的随机整数z,这样 2^(n-1)gmp\u randinit\u default显然将种子设置为某个固定值。您应该在之后调用,以将种子设置为您自己的值,该值在每次运行时都不相同 对于初始测试,您可以尝试gmp\u randseed\u ui(state,getpid())。在Linux上,通过调用getrandom()或读取/dev/uradom可以获得更随机的种子。不确定MacOS上提供了哪一个。我不知道如何使用GMP,但您似乎用默认的初始化结构初始化了随机状态。我天真地假
2^(n-1)
gmp\u randinit\u default
显然将种子设置为某个固定值。您应该在之后调用,以将种子设置为您自己的值,该值在每次运行时都不相同
对于初始测试,您可以尝试
gmp\u randseed\u ui(state,getpid())
。在Linux上,通过调用getrandom()
或读取/dev/uradom
可以获得更随机的种子。不确定MacOS上提供了哪一个。我不知道如何使用GMP,但您似乎用默认的初始化结构初始化了随机状态。我天真地假设这个默认值总是相同的。也许有一个函数可以从系统中获取该状态的“真实”随机性?你是在循环中这样做的吗?仅一次,在主功能中?你什么时候在哪里工作?请尝试创建一个演示。愚蠢的鹅,gmp\u randseed\u ui
确实丢失了。我从/dev/uradom
中读取了一个无符号长整型,然后将其传递给gmp\u randseed\u ui
,一切都像一个符咒。我想知道从/dev/uradom
读取多少数据就足以可靠地生成非常长(比如8192位)的整数,但我想这是一个完全不同的问题。@lead-free:默认的PRNG是Mersenne Twister,所以我先看看