From 30ca2c9573ee22d7b3e13b516d4c1182185235fd Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Wed, 17 Apr 2024 15:57:06 +0700 Subject: [PATCH] Add random:randn --- ADDITIONS.md | 3 +++ .../lua/userdata/LuaRandomGenerator.kt | 20 +++++++++++-------- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/ADDITIONS.md b/ADDITIONS.md index 3f8a0495..e17f8574 100644 --- a/ADDITIONS.md +++ b/ADDITIONS.md @@ -76,6 +76,9 @@ val color: TileColor = TileColor.DEFAULT ### Scripting +#### Random + * Added `random:randn(deviation: double, mean: double): double`, returns normally distributed double, where `deviation` stands for [Standard deviation](https://en.wikipedia.org/wiki/Standard_deviation), and `mean` specifies middle point + #### animator * Added `animator.targetRotationAngle(rotationGroup: string): double` diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/lua/userdata/LuaRandomGenerator.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/lua/userdata/LuaRandomGenerator.kt index f67ea194..14cc671b 100644 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/lua/userdata/LuaRandomGenerator.kt +++ b/src/main/kotlin/ru/dbotthepony/kstarbound/lua/userdata/LuaRandomGenerator.kt @@ -4,6 +4,7 @@ import org.classdump.luna.Table import org.classdump.luna.Userdata import org.classdump.luna.impl.ImmutableTable import ru.dbotthepony.kstarbound.lua.luaFunction +import ru.dbotthepony.kstarbound.util.random.nextNormalDouble import ru.dbotthepony.kstarbound.util.random.random import java.util.random.RandomGenerator @@ -84,20 +85,23 @@ class LuaRandomGenerator(var random: RandomGenerator) : Userdata returnBuffer.setTo(self.random.nextLong()) }) - .add("randf", luaFunction { self: LuaRandomGenerator, origin: Double?, bound: Double? -> - returnBuffer.setTo(self.randf(origin, bound)) + .add("randf", luaFunction { self: LuaRandomGenerator, origin: Number?, bound: Number? -> + returnBuffer.setTo(self.randf(origin?.toDouble(), bound?.toDouble())) }) - .add("randd", luaFunction { self: LuaRandomGenerator, origin: Double?, bound: Double? -> - returnBuffer.setTo(self.randf(origin, bound)) + .add("randd", luaFunction { self: LuaRandomGenerator, origin: Number?, bound: Number? -> + returnBuffer.setTo(self.randf(origin?.toDouble(), bound?.toDouble())) }) .add("randb", luaFunction { self: LuaRandomGenerator -> returnBuffer.setTo(self.random.nextBoolean()) }) - .add("randInt", luaFunction { self: LuaRandomGenerator, arg1: Long, arg2: Long? -> - returnBuffer.setTo(self.randomInt(arg1, arg2)) + .add("randInt", luaFunction { self: LuaRandomGenerator, arg1: Number, arg2: Number? -> + returnBuffer.setTo(self.randomInt(arg1.toLong(), arg2?.toLong())) }) - .add("randUInt", luaFunction { self: LuaRandomGenerator, arg1: Long, arg2: Long? -> - returnBuffer.setTo(self.randomInt(arg1, arg2)) + .add("randUInt", luaFunction { self: LuaRandomGenerator, arg1: Number, arg2: Number? -> + returnBuffer.setTo(self.randomInt(arg1.toLong(), arg2?.toLong())) + }) + .add("randn", luaFunction { self: LuaRandomGenerator, arg1: Number, arg2: Number -> + returnBuffer.setTo(self.random.nextNormalDouble(arg1.toDouble(), arg2.toDouble())) }) .build() }