My understanding is that for pydrivers the value must be returned from a script in the Text Editor called pydrivers.py, not placed as a constant in the driven channel field as you did. Example:
Function in pydrivers.py
# specify Armature object
Armtr = Object.Get('FemBodArmtr')
# get the pose data from Armature object
pose = Armtr.getPose()
# get posebone
D_PBone = pose.bones[DrvrBone]
RotX = D_PBone.quat.toEuler()
Zloc = -RotX * 2/45
Python expression placed in the driven channel field:
What happens: The Python expression passes a parameter (the bone name) to the function in the script and the function does the math and returns a value (contained in variable Zloc) to be used in the driven channel.
The “p.” that precedes the function name in the driven channels is what identifies pydrivers.py as the script to be used.
So put a little script together that uses your random function and returns a value, and refer to its function name in the driven channel field and it should work.
Everything I saw in the Metroid intros could be done in Blender using various techniques in combination – direct rendering, Materials effects, and Compositor and/or VSE effects. But there is no push-button solution. You have to know pretty much exactly what effect you’re trying to achieve, and know Blender well enough to decide what tools to use to accomplish the effect, and know when you have to use external apps like Gimp or P-shop, and then put it all together.
So start designing your effect! And experimenting! And learning!