Linux下的random()和srand(arg),rand()这两个生成的随机数有什么区别.另外还有一个疑问就是,我用random()生成的随机数序列,是固定的,那这个数列和什么有关系呢?回答详细的,

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/28 12:51:10
Linux下的random()和srand(arg),rand()这两个生成的随机数有什么区别.另外还有一个疑问就是,我用random()生成的随机数序列,是固定的,那这个数列和什么有关系呢?回答详细的,

Linux下的random()和srand(arg),rand()这两个生成的随机数有什么区别.另外还有一个疑问就是,我用random()生成的随机数序列,是固定的,那这个数列和什么有关系呢?回答详细的,
Linux下的random()和srand(arg),rand()这两个生成的随机数有什么区别.
另外还有一个疑问就是,我用random()生成的随机数序列,是固定的,那这个数列和什么有关系呢?回答详细的,

Linux下的random()和srand(arg),rand()这两个生成的随机数有什么区别.另外还有一个疑问就是,我用random()生成的随机数序列,是固定的,那这个数列和什么有关系呢?回答详细的,
首先我把这三个函数原型给你看一下
long random(void);
int rand(void);
void srand(unsigned seed);
random返回的是一个0到(2^31 - 1)的long类型整数
rand返回的是一个0到RAND_MAX的int类型整数
而你这里产生的随机数序列是一样的,这个很好解释,因为你知道srand,但是你却不知道还有一个srandom,这个函数是为random设置种子的,参数和srand一样.
我的帮助手册上甚至是这么写的:
The random() and srandom() functions have (almost) the same calling sequence
and initialization properties as the rand(3) and srand(3) functions. The
difference is that rand(3) produces a much less random sequence -- in fact,
the low dozen bits generated by rand go through a cyclic pattern. All of
the bits generated by random() are usable. For example, `random()&01' will
produce a random binary value.

希望我的回答能给你带来帮助