在C编程中的rand()问题?

可能重复:
为什么我总是用rand()获得相同的随机数序列?

所以是的,这看起来可能略微不明显,但是因为在Java变得合理之后我自学了C,所以我已经遇到了一些麻烦。 我试图在C中使用rand()函数,但是我只能调用它一次,并且当它执行时,它总是生成相同的随机数,这是41.我正在使用Microsoft Visual C ++ 2010 Express,并且我已经设置好了,所以它会编译C代码,但唯一不起作用的是这个rand()函数。 我试过包括一些常用的库,但没有任何工作。 代码如下:

#include "stdafx.h"
#include "stdio.h"
#include "conio.h"
#include "stdlib.h"

int main(void)
{
    printf("%d", rand()); //Always prints 41

    return 0;
}

这是因为rand()在执行开始时总是从同一点初始化它的伪随机序列。

在使用rand()来获得不同的值之前,你必须输入一个真正的随机种子。 这可以通过函数srand来完成,它将根据传递的种子来移动序列。

尝试:

srand(clock());   /* seconds since program start */
srand(time(NULL));   /* seconds since 1 Jan 1970 */

你必须种子rand()

srand ( time(NULL) ); 通常用于初始化随机种子。 除此以外,


在调用rand()之前,你需要一个种子。 尝试调用“ srand (time (NULL))

链接地址: http://www.djcxy.com/p/68027.html

上一篇: rand() issue in C programming?

下一篇: Parallelism on divide & conquer algorithm