随机函数

来源:互联网 发布:中智留学 知乎 编辑:程序博客网 时间:2024/06/03 14:52

随机函数1

当我们要实现几个不同的随机数时可以用rand()函数,但这种实现不是绝对,只是尽可能都不同。rand()函数包含在sdlib.h这个头文件中。

下面给个实例,求随机产生10个不同的数?

#include <stdio.h>#include <stdlib.h>void main(){for(int i=0; i<10; i++){printf("%d  ", rand());}}

随机函数2

或许我们想实现的随机数是有范围的,我们就可以用(rand()%(b-a))+a,这里的区间取值范围是[a,b),结果值是包含a不包含b。如果a0可以简写为rand()%b

下面给个实例,求随机产生10个在区间[10,99)的整数?

#include <stdio.h>#include <stdlib.h>void main(){for(int i=0; i<10; i++){printf("%d ", (rand()%(99-10))+10);}}

随机函数3

我们也可以通过宏定义的方式来实现

下面给个实例,求随机产生10个在区间[0,10)的整数?

#include <stdio.h>#include <stdlib.h>#define random(x)  (rand()%x)void main(){for(int i=0; i<10; i++){printf("%d ",random(10));}}

这里总感觉只能实现以0为下限的区间,其实我们也可以定义复杂一点的

下面给个实例,求求随机产生10个在区间[10,99)的整数?

#include <stdio.h>#include <stdlib.h>#define random(a,b)  (rand()%(b-a)+a)void main(){for(int i=0; i<10; i++){printf("%d ",random(10,20));}}

只不过稍微做了一些变化,这里就不再多介绍宏的定义了

前面有三个随机函数,当我们发现每次运行那个程序随机产生的结果都跟上次的一样,那我们就得用srand()设置种子来产生随机数,在调用rand ()函数之前都得设置好种子,还有注意的是srand()函数一般不放在循环中

srand()函数的设置可以有多种形式:

srand((unsigned int)time(NULL)); 

srand((unsigned int)time(0)); 

srand((int)time(NULL)); 

srand(((int)time(NULL))*10);

我们目前只要知道为了避免下一次运行程序时不会产生相同的结果,我们得先设置种子



#include <stdio.h>#include <stdlib.h>#include <time.h>#define random(a,b)  (rand()%(b-a)+a)void main(){srand((int)time(0));for(int i=0; i<10; i++){printf("%d ",random(10,20));}}


这段程序添加了srand((int)time(0));和#include <time.h>因为我们用到了time()函数
原创粉丝点击