//Pick a random angle going from left to right
dbTurnObjectLeft ( Weapons[CurrentWeapon].Object, ( Weapons[CurrentWeapon].Recoil * 10.5 ) - dbSin (dbRnd ( ( Weapons[CurrentWeapon].Recoil * 8.5 ) * 2 ) ) );
//Pick a random angle going from up to down
dbRollObjectLeft ( Weapons[CurrentWeapon].Object, ( Weapons[CurrentWeapon].Recoil * 7 ) - dbCos (dbRnd ( ( Weapons[CurrentWeapon].Recoil * 10 ) * 2 ) ) );
//Move the gun forward
All I could do is guess as I can't run your code.
Here is the theory, I think.
if you have the two equations:
float x = dbSin(angle);
float y = dbCos(angle);
If you feed different angle values into the equations you will always get co-ordinates of the circumference of a circle with radius of unit length(1). You can change the radius by multiplying the result as you see fit.
In your case, angle will be your random number.
EDIT: You might want to work out the random number first and use the same value for x and y.
If you cant get it to work, try writing a little simplified demo which I can run.