Depends entirely what "random" means in your world. Just randomly floating around is a different thing from actually bouncing and the more physically exact things need to be, the more complicated any potential expressions may get. That and of course it may be just as simple to simply keyframe the motion if it's only a few seconds or needs to be controlled in some way to reach specific points or whatever...
As Mylenium already teasered, it can be as simple as wiggle(frequency, amount) on position.
It can be more difficult with actual random(min, max) function, which is calculated every frame. So the value switch has to be controlled with posterizeTime(fps) expression and the movement has to be done with linear() or ease() interpolation.
And finally it can be a physics simulation with collision detection and accurate bounching, including force, gravity and friction if you like.
If you are new to expressions, the first one will take you some minutes, the second one up to two days and the third one some weeks.
With keyframes, you can get the visual result of the third option, but within a day, maybe two - depending on animation length and detail level.