永发信息网

c++中,如何生成一个服从一定随机分布的数组

答案:4  悬赏:0  手机版
解决时间 2021-02-12 22:46
我定义了两个数组,a、b,通过键盘输入,如何生成一个数组p,使得p中的元素,服从上下限为a、b中对应元素的随机分布
最佳答案
那就用随机函数 srand ,
a<b
double random(double a, double b)  
 { return a+(b-a)*rand()/(RAND_MAX + 1.0);}
利用这个函数
全部回答
假定 3行4列 整型 数组,生成 0到100之间的整数。 #include using namespace std; #include #include int main(){ int a[3][4]; // 整型2维数组 int i,j; int n=3, m=4; //行,列 srand(time(0)); // 随机种子 for (j=0;j
  • 2楼网友:慢性怪人
  • 2021-02-12 04:22
要求不高的话,用普通随机数生成函数生成一系列随机值即可。a,b上下限问题可以通过简单的对随机值做计算解决。假设随机函数得到随机值为x(x是纯小数),则符合条件的v可以是v=a+(b-a)x.
  • 3楼网友:荒野風
  • 2021-02-12 03:18
假如要生成区间[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]上的一个数
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯