3.000.000 elements to cycle thru every time you loop thru the Array ,
With that , I can say all what your array will do is crash the game
Also . Procedural's hard , to get to a pretty good generation , you'll need a modified version of perlin noise, and coding that bad boy isn't easy AT all , while you could use easier algorithms like diamond-square or midpoint displacement ( There's an example running around but I'll let you do the search ) but it's not your level AT ALL.
A lot of people went for gold and falled short , I'm telling you , try something at your level , and when you'll understand C2 better , tackle those subjects .
Cheers !
Edit:
My blow-hard answer ;
Generate a 1D curve using midpoint displacement and fill all the bottom with minerals and such
and then , for cave generation ...
"Mine" the generated terrain using this technique