What is good device for generating vibrations, offset weight motor or solenoid or some other?
A solenoid is sub-optimal for generating ongoing vibration. If the intent were to generate a single shock intermittently, then sure, a solenoid would be a good choice. 

For mechanical vibrations (presumably for sensing by human touch), two options are popular:


Offset Weight motors, aka pager motors, vibration motors: 


These are available down to very small sizes, and very low current and voltage ratings, such as 1.5 Volts, 10 mA in 3mm x 3mm x 5 mm, surface mounted. 
Operating them from your circuit is simple, even trivial. 
Downside: Very precise start and stop timing is not feasible, and vibration frequency is not simple to modify.
Mobile phones (and of course pagers in ancient times) typically use such motors for vibrating ring notification:

(Source: eBay.com, Vibrating Micro Motor - 1 to 4.5 V - 13 mm x 7 mm)

Piezoelectric benders aka coin-type speakers: 


These exist in very small heights, down to under 0.5 mm, but diameter is usually 5 to 10 mm for effective output.
Actuated by a haptic driver or haptic controller IC, or even an oscillator at desired vibration frequency, these are a little more complex to drive. Some such haptic piezo actuators require tens or even hundreds of volts, although at minuscule current. The haptic drivers typically generate the required voltages internally.
Both vibration frequency and start/stop time can be controlled with great precision.
Mobile phone haptic feedback, i.e. the mild buzzing sensation some mobiles offer to indicate the press of a key on a touch screen, for instance, typically use this mechanism. 
For an example of a piezo haptic driver with an integrated voltage boost converter, see the Texas Instruments DRV8662.

(Source: eBay.com, 12mm Piezo Disc)