C语言中生产随机数 rand()函数
2016-06-30 10:41
218 查看
参考资料:C语言中产生随机数
一:如果你只要产生随机数而不需要设定范围的话,你只要用rand()就可以了:rand()会返回一随机数值, 范围在0至RAND_MAX 间。RAND_MAX定义在stdlib.h, 其值为2147483647。
二:如果你要随机生成一个在一定范围的数,你可以在宏定义中定义一个random(int number)函数,然后在main()里面直接调用random()函数。
我这里使用了两种做法,一种是利用宏定义,另外一种是利用自己写的函数。
三:但是上面两个例子所生成的随机数都只能是一次性的,如果你第二次运行的时候输出结果仍和第一次一样。这与srand()函数有关。srand()用来设置rand()产生随机数时的随机数种子。在调用rand()函数产生随机数前,必须先利用srand()设好随机数种子(seed), 如果未设随机数种子, rand()在调用时会自动设随机数种子为1。上面的两个例子就是因为没有设置随机数种子,每次随机数种子都自动设成相同值1 ,进而导致rand()所产生的随机数值都一样。
srand()函数定义 :
参考链接: time(0)的时间转换
一:如果你只要产生随机数而不需要设定范围的话,你只要用rand()就可以了:rand()会返回一随机数值, 范围在0至RAND_MAX 间。RAND_MAX定义在stdlib.h, 其值为2147483647。
#include <cstdlib> #include <cstdio> int main() { int i; for(i = 1; i <= 10; i++) { printf("%d ",rand()); } printf("\n"); return 0; }
二:如果你要随机生成一个在一定范围的数,你可以在宏定义中定义一个random(int number)函数,然后在main()里面直接调用random()函数。
我这里使用了两种做法,一种是利用宏定义,另外一种是利用自己写的函数。
#include <cstdlib> #include <cstdio> #define random1(x) (rand() % x) int random2(int x) { return rand() % x; } int main() { int i; for(i = 1; i <= 10; i ++) { printf("%d ",random1(100)); } printf("\n"); for(i = 1; i <= 10; i ++) { printf("%d ",random2(100)); } return 0; }
三:但是上面两个例子所生成的随机数都只能是一次性的,如果你第二次运行的时候输出结果仍和第一次一样。这与srand()函数有关。srand()用来设置rand()产生随机数时的随机数种子。在调用rand()函数产生随机数前,必须先利用srand()设好随机数种子(seed), 如果未设随机数种子, rand()在调用时会自动设随机数种子为1。上面的两个例子就是因为没有设置随机数种子,每次随机数种子都自动设成相同值1 ,进而导致rand()所产生的随机数值都一样。
srand()函数定义 :
void srand (unsigned int seed);通常可以利用geypid()或time(0)的返回值来当做seed如果你用time(0)的话,要加入头文件
#include<time.h>
参考链接: time(0)的时间转换
#include <cstdlib> #include <cstdio> #include <ctime> #define random(x) (rand() % x) int main() { int i; srand((unsigned int) time(0)); for(i = 1; i <= 10; i ++) { printf("%d ",random(100)); } return 0; }
相关文章推荐
- C++ 11 Lambda表达式
- leetcode #160 in cpp
- C++中数字与字符串之间的转换
- c++内存对齐原理
- VC++发展与其对应的MFC版本
- C++ 类的继承四(类继承中的重名成员)
- 值得推荐的C/C++框架和库
- C++ 11 nullptr关键字
- C++ link error : undefined reference to 'vtable for ...'
- vc和MFC的详细历史
- C++ 11 auto关键字
- C语言不定长数组及初始化
- 300. Longest Increasing Subsequence(C++实现)
- DES加密解密C/C++
- C++中this指针的理解和用法
- 站在巨人的肩膀上,C++开源库大全
- STM32开发C语言---switch
- C,C++表达式中含++的求值顺序
- 一起talk C栗子吧(第一百六十八回:C语言实例--C语言中的布尔--bool类型)
- 彻底搞定C语言指针详解-完整版-时候初学者-必备