2014-03-31 35 views
0

我有一個二維數組,我想用b和c值進行初始化,例如50%的單元格是a,25%b和25%c。你能建議我這樣做嗎?以一定比例隨機初始化C中的一個數組的最佳方式是什麼?

編輯:我已經找到了一維數組的一個解決方案,我可以爲一個二維數組適應(我初始化確定性然後洗牌):Shuffle array in C

有沒有更好的辦法?

+0

您需要開始並提供一些代碼。 a的概率位由rand()%100 <50'處理。 –

+0

我還沒有一個代碼,數組將是空的,然後隨機用1,-1和0初始化,但是以上的比例。 – user3346223

+0

任何速度限制? –

回答

0

首先,根據比例用a,b,c填充二維數組,然後洗牌數組。

int size_a = size * 50%; 
int size_b = size * 25%; 
int size_c = size * 25%; 
int i; 
for(i = 0; i < size_a; ++i) 
{ 
    A[i/WIDTH][i%WIDTH] = a; 
} 
... 

和其他人一樣。 然後使用從鏈接獲得的shuffle(在C++中,我們有std::shuffle),同時將2D數組映射到1D數組。

+0

這就是我打算做的,但是當你寫A [size_a/WIDTH] [size_a%WIDTH] = a時,我不理解你; ? – user3346223

+0

因爲您使用的是二維數組,例如'A [3] [2]',當我們將2D數組映射到一維數組時,'a [4] = A [4/2] [4%2]' 。 – jfly

+0

我的錯誤是'A [I/WIDTH] [I%WIDTH] = a;',所以當你爲1D數組調用'shuffle()'時,'array [j]'可以映射到'A [焦耳/ WIDTH] [j%WIDTH]' – jfly

相關問題