Slay the Spire implements the gambler's fallacy in a number of places to even things out a bit. For example, the longer you go without finding a rare card or potion reward, the more likely you will find one, you never fight the same elite twice in a row, question mark rooms odds are adjusted to prevent seeing the same type of room too many times, a lot of enemies have semi-random attack patterns so that they don't just steamroll you with big attacks.
what are you calling semi-random? A lot of enemies have semi-hard coded patterns with certain parts of it having multiple options (I think this last part is as much to make the runic dome a bigger penalty as anything)
Well, for example, Gremlin Leader and Reptomancer don't have hardcoded patterns but they will not do the same attack twice in a row, that's what I mean by "semi-random". A lot of enemies are like that, they cannot use the same move more than x times in a row.
Some enemies have fully hardcoded patterns, or hardcoded patterns with multiple choices like you say, like the Heart. That's maybe less "semi-random" and more "hardcoded with a bit of randomness".
(I'm not sure which is more common between the two actually, I don't pay that close attention to attack patterns of normal enemies.)