Some of the methods I've used in my own games are:

use an array to assign stats (e.g. 17, 15, 13, 11, 10, 9)

assign from array then add modifiers (e.g. subtract 1 from a stat then add 1 to a stat. do this up to 3 times; subtract 2 from a stat then add 1 to a stat. do this up to 2 times)

Pick one of several arrays and assign stats (e.g. 18, 13, 11, 9, 8, 8 OR 16, 15, 14, 11, 10, 9 OR 15, 14, 14, 14, 13, 12)

multiple arrays based on the tier of your build (e.g. anyone running a tier 1 build would probably get better stats rolling 3D6, anyone brave enough to run a tier 6 build probably doesn't have a single base stat less than 16)

point buy, all sorts of point values,

modified point buy (e.g. taking a stat from 16 to 17 costs 4 points not 3, taking a stat from 17 to 18 costs 6 points not 3)

point buy with different values depending on tier of build (see arrays based on tier above)