我有一個二維數組,我想用b和c值進行初始化,例如50%的單元格是a,25%b和25%c。你能建議我這樣做嗎?以一定比例隨機初始化C中的一個數組的最佳方式是什麼?
編輯:我已經找到了一維數組的一個解決方案,我可以爲一個二維數組適應(我初始化確定性然後洗牌):Shuffle array in C
有沒有更好的辦法?
我有一個二維數組,我想用b和c值進行初始化,例如50%的單元格是a,25%b和25%c。你能建議我這樣做嗎?以一定比例隨機初始化C中的一個數組的最佳方式是什麼?
編輯:我已經找到了一維數組的一個解決方案,我可以爲一個二維數組適應(我初始化確定性然後洗牌):Shuffle array in C
有沒有更好的辦法?
首先,根據比例用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數組。
這就是我打算做的,但是當你寫A [size_a/WIDTH] [size_a%WIDTH] = a時,我不理解你; ? – user3346223
因爲您使用的是二維數組,例如'A [3] [2]',當我們將2D數組映射到一維數組時,'a [4] = A [4/2] [4%2]' 。 – jfly
我的錯誤是'A [I/WIDTH] [I%WIDTH] = a;',所以當你爲1D數組調用'shuffle()'時,'array [j]'可以映射到'A [焦耳/ WIDTH] [j%WIDTH]' – jfly
您需要開始並提供一些代碼。 a的概率位由rand()%100 <50'處理。 –
我還沒有一個代碼,數組將是空的,然後隨機用1,-1和0初始化,但是以上的比例。 – user3346223
任何速度限制? –