Only the very first version of Tetris, by Alexey Pajitnov and Vadim Gerasimov, doled out bricks at random. The result is a pure puzzle, but one with a high likelihood of frustrating (and even theoretically unplayable) sequences. Accordingly, developers have introduced bias and ratio management to balance short-term unpredictability with long-term playability. There's even a a history of Tetris Randomizers to enjoy, with code examples to show the various approaches.
Here's the rule from Nintendo's definitive 1985 edition:
To cut down on piece floods (repeating pieces) a history check was added to the randomizer. This simple check would,
• choose a piece,
• check if the piece was the same as the last,
• If it was it would chose a new piece, but only once,
• and whatever was the result, was the piece dealt.
This still didn't fix the problem of piece droughts, which was solved by switching to virtual "bags" of pieces in 2001's Tetris Worlds, so the likelihood of getting a piece increases each time you don't get it, and vice versa, for each bag of pieces. But now it's rather easy to predict, so what next? Things get really complicated with Tetris: The Grand Master 3 – Terror-Instinct (2005).
See also Bastet, a version of Tetris that simply calculates the worst possible piece for any given deal, and deals you it.
My doubtless-unpopular opinion is that predictability is not only fine, but desirable. In fact, the sequence of pieces should be deterministic in competitive Tetris, in a way that a beginner can understand, that an average player can predict some of the time, that a master can predict most of the time. A Tetris position should be analyzable in the same way as a position in Chess or Go. I admit that I might be halfway to inventing a tetromino board game that is obviously not Tetris, and is probably reinvented about monthly by someone already.
The history of Tetris randomizers [simon.lc]