有人可以请我详细说明如何实现这一目标吗?
例如,假设我有一个数组a [j]初始化为值{3,4,5}。我想构建一个第二个数组,其中填充了第一个数组中的值由零以上的随机数填充。所以b [i]会被初始化为以下范围内的随机数:{0-3,0-4,0-5}
在C ++中实现这一目标的好方法是什么?
答案 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)