如何产生随机数组,并且可以设定范围(比如-10到20)以及随机数个数(有限个)

#include
#include//time的返回值可以作为srand的参数
using namespace std;
#define random(x)(rand()%x)//固定格式
int main()

不知道我这个满足你的需求不:

#include <iostream>
#include <cstdlib>
#include <ctime>
 
using namespace std;
 
const int ARRAY_LEN = 10;
const int MIN_RAND = -10;
const int MAX_RAND = 20;
 
int main() {
  int randomArray[ARRAY_LEN];
  srand(time(NULL)); // 初始化随机数种子
 
  for (int i = 0; i < ARRAY_LEN; i++) {
    randomArray[i] = MIN_RAND + rand() % (MAX_RAND - MIN_RAND + 1);
  }
 
  for (int i = 0; i < ARRAY_LEN; i++) {
    cout << randomArray[i] << " ";
  }
  cout << endl;
 
  return 0;
}
  • 包含头文件cstdlib和ctime,使用随机数生成函数rand()和时间函数time()
  • 定义常量:数组长度为ARRAY_LEN,最小随机数为MIN_RAND,最大随机数为MAX_RAND
  • 调用srand(time(NULL))初始化随机数种子
  • 循环生成数组元素,rand()生成的随机数除以数域加1再加上最小数值,保证随机数在指定范围内
  • 循环打印随机数组的元素

可以定义一个函数用于产生指定数量以及指定区间的随机数,然后在main函数从输入获取需要产生随机数的区间,以及需要产生的数量后,调用此函数产生所需随机数后再打印结果即可。

代码如下:

参考链接:


https://blog.csdn.net/m0_69787428/article/details/126725738

https://baike.baidu.com/item/free%28%29/9848328?fr=aladdin


#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;

// begin为范围的起始数,end为范围的终止数,n为要产生随机数的个数 
int * createRandomArr(int begin,int end ,int n){
    
    
    // 让int指针pa指向申请的n个int整数长度的内存位置 
    int * pa = (int  *)malloc(sizeof(int)*(n));

    if(pa==NULL){
        cout<<"申请内存失败!\n";
        return NULL;
    }

    
     // https://blog.csdn.net/cumtb2002/article/details/107798906
     // https://blog.csdn.net/m0_69787428/article/details/126725738 
     srand(time(0)); // 以当前时间作为随机数的种子 
     int i;
     // 产生n个[begin,end]区间的随机数 
     for(i=0;i<n;i++){ 
         pa[i] = (rand()%(end-begin+1))+begin;
     }
     
     return pa; // 返回指向存储了n个[begin,end]区间的随机数的数组的指针 
    
}

int main(void){
    
    int n,begin,end;
    cout<<"请输入要产生的随机数的区间:";
    cin>>begin>>end;
    cout<<"请输入要产生的随机数的个数:";
    cin>>n;
    
    // 调用 createRandomArr()函数产生所需的随机数 
    int * result = createRandomArr(begin,end,n);
    int i;
    
    if(result==NULL){
        cout<<"产生随机数失败!\n";
        return 0;
    }
    
    // 打印结果 
    cout<<"产生的随机数为:\n";
    for(i=0;i<n;i++){
        cout<<result[i]<<" ";
    }
    cout<<endl; 
    
    // https://baike.baidu.com/item/free%28%29/9848328?fr=aladdin
    free(result); // 释放内存 
//    printf("释放内存后:\n");
//    for(i=0;i<n;i++){
//        printf("%d ",result[i]);
//    } 
    
    return 0;
    
} 

img