随机数数组由第二个数组中的值限定

时间:2015-04-08 00:38:58

标签: c++ arrays random vector boundary

有人可以请我详细说明如何实现这一目标吗?

例如,假设我有一个数组a [j]初始化为值{3,4,5}。我想构建一个第二个数组,其中填充了第一个数组中的值由零以上的随机数填充。所以b [i]会被初始化为以下范围内的随机数:{0-3,0-4,0-5}

在C ++中实现这一目标的好方法是什么?

2 个答案:

答案 0 :(得分:1)

如果你的系统有arc4random(3)和朋友(可能确实如此),那真的很容易:

int a[3] = {3, 4, 5};
int b[3];
for (int i = 0; i < 3; i++)
{
    b[i] = arc4random_uniform(a[i] + 1);
} 

从上面链接的手册页:

  

arc4random_uniform() 将返回单个32位值,均匀分布但小于 upper_bound

答案 1 :(得分:0)

c ++中最常见的函数是函数rand(),它在0和RAND_MAX之间生成一个随机数,它在cstdlib中定义。这就是为什么你需要使用模运算,在你的情况下它将是:

b[i] = rand() % (a[i]+1)