c++中,如何生成一个服从一定随机分布的数组
答案:4 悬赏:0 手机版
解决时间 2021-02-12 22:46
- 提问者网友:夢醒日落
- 2021-02-12 00:52
我定义了两个数组,a、b,通过键盘输入,如何生成一个数组p,使得p中的元素,服从上下限为a、b中对应元素的随机分布
最佳答案
- 五星知识达人网友:酒安江南
- 2021-02-12 02:26
那就用随机函数 srand ,
a<b
double random(double a, double b)
{ return a+(b-a)*rand()/(RAND_MAX + 1.0);}
利用这个函数
a<b
double random(double a, double b)
{ return a+(b-a)*rand()/(RAND_MAX + 1.0);}
利用这个函数
全部回答
- 1楼网友:第幾種人
- 2021-02-12 05:57
假定 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]上的一个数
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯