package ID import "math/rand" const MaxID = 2 << 24 type Type uint type Generator struct { // IDEA: i hate you step Type Last Type } func (idg *Generator) Next() Type { idg.Last = (idg.Last + idg.step) % MaxID return idg.Last } func New(seed uint32) *Generator { return &Generator{ Last: Type(seed % MaxID), step: Type((rand.Uint32() % MaxID) | 1), } }