package settings import "math/rand" type distributionOptions struct { // The chance of a value to be defaulted by zero RandomisationChance float64 // The song start point will be between [0; len(song) * MaxPointPercent] MaxPointPercent float64 // All the values less than this param will be defaulted to zero StartSnapPercent float64 } func (base distributionOptions) GetDistributedInt(dur int) int { if rand.Float64() < base.RandomisationChance { return 0 } var random = rand.Float64() * base.MaxPointPercent if random >= 1 { panic("Random is greater than 1") } var randomDur = int(random * float64(dur)) if randomDur <= int(base.StartSnapPercent * float64(dur)) { return 0 } return randomDur }