2015-04-08 75 views
0

有人可以请我指出一个关于如何完成这个的好解释吗?由第二个数组中的值限定的随机数组

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

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

回答

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

0

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

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

+0

当心[模偏置(http://stackoverflow.com/questions/10984974/如果这对你的程序来说可能是一个问题,那么为什么这样做 - 人们说那里是模 - 偏 - 什么时候使用一个随机数发生器)。 –

+0

你是对的!我没有想到这一点。 – Albondi

相关问题