您的位置:首页 > 编程语言 > C语言/C++

C++ 产生随机数 (Dev开发环境)

2018-01-22 13:21 337 查看
 以前写C++代码直接使用Clion ,最近因为比赛,所以换成了Dev-C++,突然发现一些以前写过代码,在Dev-C++报错。

今天主要说一下我在Dev开发环境下,写C++产生随机数的代码。

 1. 首先需要使用的库

#include<stdlib.h>
#include<ctime>
主要使用里面的srand、rand、time 三个函数

1.1srand函数
它需要提供一个种子,这个种子会对应一个随机数,如果使用相同的种子,后面使用rand函数产生的随机数
都是一样的,为了防止随机数每次重复,我们常常使用系统时间来初始化,即使用ctime库中的time函数来获得
系统时间,它的返回值为从00:00:00 GMT,January 1,1970到现在所持续的秒数,将值传给srand函数
我们通常使用srand(time(NULL))
1.2 rand函数
产生一个伪随机数(本质上是根据srand初始的随机数种子),范围为0-RAND_MAX,
直接使用rand()%n获得的是从0~n-1中的任意一个数
比如:使用rand()%10 得到的随机数0~9

同时我们可以通过在后面+z来进行偏移进行求不同范围内的随机数
比如:如果想得到1~10可以通过使用 rand()%10+1, 相当于你得出来的结果+1得出来最低的是0+1=1
,得到最高的是9+1=10
总结一下n代表的是种类,或者是可能性,产生随机数有多少种可能。%10就代表产生的随机数有10种可能
z的作用是进行偏移,提供给你一个基址,z=10就代表你从10开始,最终的范围是z~n+z-1
2. 例子给定一个范围[rangL,rangR] 在此范围生成n个
#include<iostream>
#include<stdlib.h>
#include<ctime>
using namespace std;
int* generateRandomArry(int n, int rangL, int rangR){

int *arr = new int
;
srand((unsigned)time(NULL));
for(int i=0; i<n;i++) {
arr[i] = rand()%(rangR-rangL+1) +rangL ;
}
return arr;
}
int main() {
int n = 10;
int *arr = generateRandomArry(n,10,20);
for(int i=0; i<n;i++){
printf("%d\n",arr[i]);
}
return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法 C Dev