avatar
s*b
1
我用srand()和rand()产生出来的随机数每次都是一样的。
大家是怎么解决的?
avatar
E*V
2
seed?

【在 s**b 的大作中提到】
: 我用srand()和rand()产生出来的随机数每次都是一样的。
: 大家是怎么解决的?

avatar
s*t
3
that's how pseudo-random number generator works. change seed using
system clock before generate the first random number.

【在 s**b 的大作中提到】
: 我用srand()和rand()产生出来的随机数每次都是一样的。
: 大家是怎么解决的?

avatar
s*b
4
不小心把test.c删除了,心痛阿。。。
以下是我的部分code
============================
MPI_Init();
MPI_comm_rank(&rank);
MPI_comm_size(&tasks);
srand(time(NULL));
number=rand()/(MAX_RAND+1);
...
===========================
用seed的话是不是把time(NULL)删掉换成一个指定的数字?

【在 s***t 的大作中提到】
: that's how pseudo-random number generator works. change seed using
: system clock before generate the first random number.

avatar
s*t
5
not very familier with MPI. but seems you are already setting the seed.
but usually there's a range for the seed. you should do a mod on the time.

【在 s**b 的大作中提到】
: 不小心把test.c删除了,心痛阿。。。
: 以下是我的部分code
: ============================
: MPI_Init();
: MPI_comm_rank(&rank);
: MPI_comm_size(&tasks);
: srand(time(NULL));
: number=rand()/(MAX_RAND+1);
: ...
: ===========================

avatar
s*b
6
我用的在个人电脑上没问题,但是想移植用MPI。

【在 s***t 的大作中提到】
: not very familier with MPI. but seems you are already setting the seed.
: but usually there's a range for the seed. you should do a mod on the time.

avatar
s*b
7
我现在用seed=rank,rank是进程号,这样产生出来的随机性好不好?

【在 E*V 的大作中提到】
: seed?
avatar
E*V
8
这个随机性好不好是靠rand()的算法,
seed的作用,我的理解就是从一个序列的某个位置开始数下去。

【在 s**b 的大作中提到】
: 我现在用seed=rank,rank是进程号,这样产生出来的随机性好不好?
avatar
s*i
9
it is better to multiply a large number to rank as the seed
Many random generators will generate similar sequences from close seeds.

【在 s**b 的大作中提到】
: 我现在用seed=rank,rank是进程号,这样产生出来的随机性好不好?
avatar
s*b
10
3x a lot!

【在 s**i 的大作中提到】
: it is better to multiply a large number to rank as the seed
: Many random generators will generate similar sequences from close seeds.

avatar
y*d
11
如果是 linux(unix?) 系统的话,可以使用 /dev/random 或者 /dev/urandom,从这两
个文件里面读取 seed。两个文件的差异你可以 google
int
getRandInt()
{
int fd;
int num = time(NULL) + getpid() * 100;
fd = open("/dev/random", O_RDONLY);
if (fd >= 0) {
read(fd, &num, sizeof (num));
close(fd);
}
return num;
}
srand(getRandInt());

【在 s**b 的大作中提到】
: 我现在用seed=rank,rank是进程号,这样产生出来的随机性好不好?
avatar
s*b
12
let me try to understand your code first,hehe.
Your help is greatly appreciated!

【在 y***d 的大作中提到】
: 如果是 linux(unix?) 系统的话,可以使用 /dev/random 或者 /dev/urandom,从这两
: 个文件里面读取 seed。两个文件的差异你可以 google
: int
: getRandInt()
: {
: int fd;
: int num = time(NULL) + getpid() * 100;
: fd = open("/dev/random", O_RDONLY);
: if (fd >= 0) {
: read(fd, &num, sizeof (num));

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。