随机函数
来源:互联网 发布:中智留学 知乎 编辑:程序博客网 时间: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。如果a为0可以简写为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));}}
- 随机函数
- 随机函数
- 随机函数
- 随机函数
- 随机函数
- 随机函数
- 随机函数
- 随机函数
- 随机函数
- 随机函数
- 随机函数
- 随机函数
- 随机函数
- 随机函数
- 随机函数
- 随机函数
- 随机文件与随机函数
- 随机函数的伪随机
- heritrix的web应用2(10.2.3 Frontier链接制造工厂 )
- Hibernate 解决n+1问题
- 内核是如何管理内存的
- Java的calendar类用法
- {Manacher}hdu3068
- 随机函数
- 二分查找的java实现
- Java堆,栈和常量池(2)
- Lucene4.5索引的创建与搜索
- 内存管理
- 页面缓存——内存与文件的那些事儿
- csdn技术分享-----------------------------郑州化州阳春遵义阜康仪征贺州寿光郑州绵阳
- 动态规划算法之矩阵链乘法
- LINQ to Entities 不识别方法的解决方案