Well, figure out what it's supposed to do and then ask a specific question about that. I'm not really clear on what it's doing. It seems to be getting the serial number from the first drive with a letter between C: and Z:, modifying that number, and then using it to seed a random number generator. Then it does some bit-shifting and starts to pull some random numbers.
The question is: what are you trying to do with this code? Give us a little information about the environment you're running this in and what you're trying to accomplish. Win32::DriveInfo seems like it will do most of what you want, but it's still not clear what the purpose of all this is.
The computer can't tell you the emotional story. It can give you the exact mathematical design, but what's missing is the eyebrows.
- Frank Zappa