The code I wrote/modified, should run on your cube. You may need to change it a tiny bit, or use the CA or CC version (one is for common cathode planes, the other is common anode planes).
The major difference is the transistors, and you dont need to change the code for that. You just need to wire the cube like I did, or change the code to suit your wiring.
I also made this instructable, it has some pictures and stuff that are not on this forum thread, you may find good stuff there too:http://www.instructables.com/id/4x4x4-LED-cube-upgrade-with-Shift-Registers-74hc5/
that instructable is all about converting parallel to serial communication, but it has pertinent info about what you are trying to build.
I understand that the MR need to be connected to the power source(high), but I havnt seen one with a 1k resistor on it. The caps are called decoupling caps, and they are just there to make sure the shift registers dont go hungry.
The size of the resister on the columns will depend on the LEDs you use. Different color LEDs have different forward voltages. Its a simple calculation to figure out the right resistor, but you need to know your LEDs forward voltage, red ones are often around 1.9v, blue ones are often over 3 volts, I am unsure about the white ones that I used, but I think that they were in a flashlight running at 4.5v with no resistor, so I guessed and stuck 100 ohm resistors in.
C/C++ is object oriented programming, and a lot more robust than basic. a lot of that basic knowlege will be handy when writing new code, but object oriented programming is dramatically different. I consider myself a terrible programmer, but I manage to muddle through it.
The program I posted is a pattern based solution, you have to create the pattern for it to display, and it just repeats the pattern. There are other ways, like applying math and graphing it on the cube. or random, like you ask about, thats machine generated patterns and not static, but rather dynamic.
The cube works by holding a column high/low, while holding the plane high/low. In your example you will need to turn one plane low, and one column high to illuminate one LED.
The way i have the program setup, it sequences through each plane, with a loop, within that loop, it reads in 16 bits of data, and shuffles them out to the shift registers in a serial fashion.
To do what you want, you would do it completely different.
What you want to do is pick a random number(integer) between 1 and 4, and pick a number between 1 and 16. The first number you bring that plane low, the second number you bring the column high. That lights up an LED, then you wait a few miliseconds, and turn it off. Then repeat the procedure.
With the parallel program that was a bit straightforward, but with the shift registers, you will have to do it a bit differently, since you will need to pad the other 15 bits with 0s. Lets say you randomly pick plane 2, and LED 5, you will need to send the shift registers 4 0's, then a 1, then 11 more 0s.
I dont know how you could separate the data from the program. There is a way to get the arduino to read data via serial, its possible to run the cube from serial data, but I havnt done that.
I never had a vic20, but I had a c64, and a TRS-80, I did a lot of basic, back in the 70s 80s and 90s even. I didnt learn C until just before this century.