Sure I can break down a few more of the ideas i was trying to put across.
Firstly, 0 will be present in the array always unless you change 0,0 and pushing 'adds' to the array, so you do not need to push an empty item, 0,0 is just 0.
floor(random(1,array.width)) is to choose an item.
When you push those items to a 1,1 array you will notice that the first item is at 1, because 0 is populated by 0, that's why I choose to start from 1, however the 0 still counts towards the width.
array.width is indeed the number of X or items in the array however random does not include the second number, it is up to but not including the high range value (see manual). So if you pushed 3 items to the array, the width is 4 but the items are at 1,2,3. Because it would now pick from 1-4 not including 4 then random(1, array.width) works fine for any number of items. random(1,4) picks from 1 - 3.9. floor rounds whole numbers down hence 1-3. This is an explanation of why I used this however you can just assume floor(random(1,array.width)) will always work if you want.
As for grabbing the item since it's important i'll have to explain it more in depth. When you choose an item you are setting an int variable, lets call it 'int' to floor(random(1,array.width)). Let's say the result is 2.
Now you set a TEXT variable, lets call it 'pickedItem' to array.at(int,0).
This means according to your example. TEXT would now be (assuming you have removed redundant NO_ITEM as mentioned above) "Rock_Helmet". Now you have this text variable to play with.
You now say delete array.at(int,0) which will remove "Rock_Helmet" i.e. it cannot be picked again, resolving that you wanted to remove an item from being picked again.
Remember the array is only for storing what items are to be picked, anything else for the item can be on the event sheet. So you could now say if pickedItem=Rock_Helmet then equip it. Or set currentItem to pickedItem. Whatever you want to do. If it was to appear in the level as a pick up you could say set pick up type to pickedItem. If it was to set an anim you could say set animation to pickedItem and it would appear as a Rock_Helmet. To summarise, all this is doing is replacing your ITEM_NUMBER with a text variable called pickedItem which = the name of the item, but has also allowed for picking a random item.
Edit: I just saw that you wanted NO_ITEM to be a default weapon, well it won't be picked right so i'm not sure why it would be in the array, but if you want to pick it then set 0,0 to NO_ITEM, do not push.