C++中怎样生成一组随机数组

来源:百度知道 编辑:UC知道 时间:2024/07/01 14:18:55
我想生成一组随机数组,请高手教教我

#include <iostream.h>
void main()
{

int i,a[N];
for (i=0;i<N;i++)
{
a[i]=rand()%max; //max决定随机域,其随机域为0~MAX-1
cout<<a[i];
}

}
//a[]即为一个长度为10的随机数组,若要修改长度,把所有的10

假如要生成区间[a,b]中的N个随机数,a<b
假设N=100;
那么
#include<time.h> //需要这个
#include<math.h> //这个也要

然后
srand((unsigend)time(NULL));//
int num[100];
int a=100,b=300;// 生成100-300之间的随机数
for(int i=0;i<100;i++)
num[i]=rand()%(int)(b-a+1)+a;

这个算法的证明过程
假设A是一个范围很大的随机数,现在要生成区间[a,b]上的随机数,a<=b<=max(A),假设M是一个未知的确定整数
那么A%M的结果在区间[0,M-1]上,为了让这个区间和区间[a,b]重合,必须让区间[0,M-1]在数轴上平移X(X为整数)以后可以和[a,b]重合
因此,必须满足0+X=a,并且M-1+X=b
可以解得a=X,M=b-x+1=b-a+1
所以可以知道A%(b-a+1)可以得到区间[a,b]上的一个数

使用rand()函数+循环语句可生成一组随机数组。

1、C语言提供了一些库函数来实现随机数的产生。C语言中有三个通用的随机数发生器,分别为 rand函数, random函数, randomize 函数。rand函数产生的并不是真意正义上的随机数,是一个伪随机数,是根据一个数,称之为种子,为基准以某个递推公式推算出来