The Diablo 2 Wiki
The Diablo 2 Wiki archive is available for anyone looking for information on Diablo 2. All information here is pre-D2R but contains a lot of useful information that is still relevant. Updated sections for new D2R features can be found on the PureDiablo Diablo 2 section

Set item generation (Diablo II)

From Diablo 2 Wiki
Diablo II Items [e]
BeltsBody ArmorBootsCircletsGlovesHelmsShields
Assassin ItemsAmazon ItemsBarbarian ItemsDruid ItemsNecromancer ItemsPaladin ItemsSorceress Items
CharmsClass ItemsCraftedHoradric CubeRunesSet ItemsUniquesJewelsSockets
Guides and Stats
CalculationsGamblingItem GenerationModifiersRunewordsQuest ItemsPotionsEtherealGemsBase Item LevelsMisc

This information only applies to D2 classic, pre-expansion, v1.00-v1.06. The following buggy odds of generating set items were changed in D2X patches.

Odds of Finding Set Items

There are sixteen Item Sets in Diablo II, and no Sets are meant to be harder to find than others. They are not weighted, and any monster that can drop an item of a particular type might drop a Set Item. However, due to the way the game picks which item to drop, if a particular item type (such a ring or amulet) is found in more than one set, some Set Items are much more commonly found than others.

The odds are based on how many sets in a row, in the game's internal listing, do not have that item in them. The more in a row after a set that does, the better the odds that set item will drop. All odds are the appropriate multiple of 1/16, which is 6.25%.

There is no way to circumvent these odds. Set Items aren't like Uniques, where the game won't drop one if that item already exists in the game. You just have to keep killing monsters that can drop the type of item you want, or keep gambling them, and eventually you'll get the one you want. It is unknown (but likely) if there will be any changes to how this works in the Expansion Set.

Set Item Type Odds to Generate Item
Amulets 31.25% - Tancred's
18.75% - Civerb's
12.5% - Iratha's
12.5% - Vidal's
12.5% - Angelic
6.25% - Cathan's
6.25% - Arcanna's
Light Gauntlets 68.75% - Iratha's Cuff
31.25% - Arctic Cuff
Heavy Belts 56.25% - Infernal
43.75% - Iratha's
Rings 37.5% - Cathan's
62.5% - Angelic Set
Crowns 18.65% - Iratha's
81.25% - Milabrega's

Why does this happen? Here is the internal listing order of sets that the game generates the drops from:

Internal Set Order

...wraps back to top

The game first picks an item type, (say a ring, for this example), then scans the sets for rings. As soon as it finds an Item Set with a ring it remembers that, and continues down the Item Set list until it finds another Set with a ring, and drops that one.

If there is only one of an item type in all the sets, you always get that one (of course). If there are two or more, then the order these sets are listed in will determine the odds. Note that before Cathan's there are 10 sets, and before Angelic there are 6 sets. Remember that the game finds an item in a set, and then looks to the next set going down the list and generates that one.

Therefore there is a 10/16 chance (62.5%) of the ring from the Angelic Set, and a 6/16 chance (37.5%) of the ring from the Angelic Set, generating.

If there were an item found in only two sets, and those sets were listed right in a row, then that item would be 93.75% chance from the lower set, and only 6.25% from the upper set. This doesn't happen, though some of the amulets do have only a 6.25% chance of dropping.

There doesn't appear to be any logic or reason to the order of sets here, they don't go alphabetically or by number of items or Clvl requirements. Probably these are just the order they were created and added to the game code by the Blizzard North designers. The non-random selection isn't a disaster, but it would be nice if it weighted them evenly, or perhaps made the higher Clvl sets drop less frequently, since they are theoretically higher quality. Note that if there were a set with two of the same type of item (rings, obviously) that only the second one in that set would ever drop, given how Set Item generation works now.