r**3 发帖数: 222 | 1 请问怎么用C++实现多个相互独立的random number generator? |
r**3 发帖数: 222 | |
h*******e 发帖数: 225 | 3 用任何rng的库都可以。自己包一个class也行,无非是种子不同而已。
不过不知道你到底用来干什么。
【在 r**3 的大作中提到】 : 自己顶一下!在线等!谢谢!
|
r**3 发帖数: 222 | 4 我要产生10000个实例,每个实例有自己的random number generator
假如用srand()设定种子
可是并没有一个显式的变量来保存这个种子
所以实际上还是10000个实例共用一个RNG
不知道我的理解对不对。 |
h*******e 发帖数: 225 | 5 首先,一般用一个RNG也可以了,如果没有那么挑剔的话。
其次,用rand()的话,只有一个RNG,如真的想要不同种子的RNG共存,
随便找个RNG的library都行,一般都会封装成class,new的时候给seed。
【在 r**3 的大作中提到】 : 我要产生10000个实例,每个实例有自己的random number generator : 假如用srand()设定种子 : 可是并没有一个显式的变量来保存这个种子 : 所以实际上还是10000个实例共用一个RNG : 不知道我的理解对不对。
|
t****t 发帖数: 6806 | 6 首先, 你要控制那么细的话, libc自己的rand()是个很糙的函数, 多半不合要求
其次, 你确定是每个实例都要一个自己的PRNG吗?
如果不是并行做, 你可以做完一个, 再重新用srand()设种子, 再做下一个
【在 r**3 的大作中提到】 : 我要产生10000个实例,每个实例有自己的random number generator : 假如用srand()设定种子 : 可是并没有一个显式的变量来保存这个种子 : 所以实际上还是10000个实例共用一个RNG : 不知道我的理解对不对。
|
r****t 发帖数: 10904 | 7 libc 的 rand() 是怎么产出随机数的?用 /dev/random 来 seed 行不行?
我知道的有 Knuth 的 ACG 里面的 RNG 是个"不错"的 RNG, 到底多好我不知道。
【在 t****t 的大作中提到】 : 首先, 你要控制那么细的话, libc自己的rand()是个很糙的函数, 多半不合要求 : 其次, 你确定是每个实例都要一个自己的PRNG吗? : 如果不是并行做, 你可以做完一个, 再重新用srand()设种子, 再做下一个
|
y****e 发帖数: 23939 | 8 最近刚好做过这个,你去看看gsl的random number generator部分就知道了 |
h*******e 发帖数: 225 | 9 就是定了种子以后每调用一次就produce一个阿。
可以用/dev/random,不过lz的问题似乎不是这个。
【在 r****t 的大作中提到】 : libc 的 rand() 是怎么产出随机数的?用 /dev/random 来 seed 行不行? : 我知道的有 Knuth 的 ACG 里面的 RNG 是个"不错"的 RNG, 到底多好我不知道。
|
t****t 发帖数: 6806 | 10 /dev/random is different -- /dev/random is RNG, while libc rand() or
whatever function from software is PRNG. "Real" rng must have OS support (
which /dev/random do).
most libc rand() is linear congruential generator. it's easy to implement
and fast.
however it has some severe problem, and is of low quality.
【在 r****t 的大作中提到】 : libc 的 rand() 是怎么产出随机数的?用 /dev/random 来 seed 行不行? : 我知道的有 Knuth 的 ACG 里面的 RNG 是个"不错"的 RNG, 到底多好我不知道。
|