a****n 发帖数: 20 | 1 用 time作seed
但是因为是秒的,相同一秒之内产生的数据都是一样的
有什么方法可以不用sleep(1)而产生随机数吗?
每次产生的不同
谢谢 |
y****e 发帖数: 23939 | 2 在Linux下可以从RAND里取一个数做种子。Windows的话可以用micro second做种子。
google一下,网上有很多这样的讨论和code。 |
l*****c 发帖数: 1153 | 3 那个只是种子啊,你不会每次都初始化种子吧?
说起这个,那天和VMWare的人聊。他们做VMotion的时候,就是记录所有的时钟中断,
然后replay,通过这个来复制nondeterministic behavior, 呵呵。
【在 a****n 的大作中提到】 : 用 time作seed : 但是因为是秒的,相同一秒之内产生的数据都是一样的 : 有什么方法可以不用sleep(1)而产生随机数吗? : 每次产生的不同 : 谢谢
|
a****n 发帖数: 20 | 4 能不能稍微详细说点,
我是linux下,什么叫从RAND里取一个数作种子?
谢谢
【在 y****e 的大作中提到】 : 在Linux下可以从RAND里取一个数做种子。Windows的话可以用micro second做种子。 : google一下,网上有很多这样的讨论和code。
|
a****n 发帖数: 20 | 5 我生成种子之后,可以把种子存起来,然后再重播了
【在 l*****c 的大作中提到】 : 那个只是种子啊,你不会每次都初始化种子吧? : 说起这个,那天和VMWare的人聊。他们做VMotion的时候,就是记录所有的时钟中断, : 然后replay,通过这个来复制nondeterministic behavior, 呵呵。
|
l*****c 发帖数: 1153 | 6 是啊,但是VM不可能修改Guest的code
【在 a****n 的大作中提到】 : 我生成种子之后,可以把种子存起来,然后再重播了
|
l*****c 发帖数: 1153 | 7 你是不是在多个线程里面各自单独初始化种子,但是因为初始化的时间太接近结果造成
大家的随机序列都一样?如果这样的话,可以先在一个线程里面初始化种子,然后生成
一串随机数,再把这些随机数分配给各个线程作为初始化的种子。
【在 a****n 的大作中提到】 : 能不能稍微详细说点, : 我是linux下,什么叫从RAND里取一个数作种子? : 谢谢
|
y****e 发帖数: 23939 | 8 我还是贴code吧:
unsigned int seed;
FILE * devrandom;
if((devrandom = fopen("/dev/random", "r")) != NULL) {
fread(&seed, sizeof(seed), 1, devrandom);
fclose(devrandom);
}
【在 a****n 的大作中提到】 : 能不能稍微详细说点, : 我是linux下,什么叫从RAND里取一个数作种子? : 谢谢
|