2015-04-08 106 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

相關問題