diff options
Diffstat (limited to 'Settings')
| -rw-r--r-- | Settings/Distribution.go | 28 | ||||
| -rw-r--r-- | Settings/Settings.go | 6 |
2 files changed, 34 insertions, 0 deletions
diff --git a/Settings/Distribution.go b/Settings/Distribution.go new file mode 100644 index 0000000..fc8ae13 --- /dev/null +++ b/Settings/Distribution.go @@ -0,0 +1,28 @@ +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 +} diff --git a/Settings/Settings.go b/Settings/Settings.go index e859677..bd22056 100644 --- a/Settings/Settings.go +++ b/Settings/Settings.go @@ -10,10 +10,16 @@ const settingsLocation = "Settings.json" type Settings struct { SongsLocation string + Distribution distributionOptions } var defaultSettings = Settings { SongsLocation: "./Songs", + Distribution: distributionOptions{ + RandomisationChance: 0.5, + MaxPointPercent: 0.75, + StartSnapPercent: 0.1, + }, } func (base Settings) String() string { |
