c语言随机函数问题

来源:百度知道 编辑:UC知道 时间:2024/05/13 16:53:48
/* 初始化随机数产生函数randomize() */
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int main (void)
{
int i;
randomize();
printf("A random number in the 0 to 99 is:%d\n",random(100));
printf("Ten random numbers from 0 to 99 is:\n");
for(i=0;i<10;i++)
printf("%d\n",rand()%100);
getch();
return 0;
}
上面的程序是正确的,我的问题是:
1.srand()和random()的区别
2.上面没有先srand(seed),怎么用rand()函数也有输出?使用rand()前不是先要srand(seed)吗?

random(int num)其实是rand()的宏定义。
#define random(num) rand()%num
srand()只是给出一个随机数的种子,以让rand()每次能得到不同的数,
但你这里己用了randomize(); 是一样的,而且randomize()函数是根据当前时间生成的种子比srand()随机性更好。

randomize();
random(100);
都不是标准的库函数。

srand 产生 种子,用来初始化,供 计算伪随机数序列。
rand 计算随机数,用当前种子,即 默认种子或 srand 产生的 种子。

不同编译器,库函数名可能不同,但基本原理相同。一个产生种子,一个计算伪随机数序列。

如果不用srand 产生新的种子,伪随机数序列是不变的。达不到模拟“随机”的目的。