浏览代码

Merge pull request #4 from bmx-ng/task/secure-build-issue

Fixed bmx_secure_next_double missing args. Resolves #3.
Brucey 1 年之前
父节点
当前提交
3840257809
共有 1 个文件被更改,包括 25 次插入3 次删除
  1. 25 3
      secure.mod/secure.bmx

+ 25 - 3
secure.mod/secure.bmx

@@ -26,10 +26,15 @@ bbdoc: Random Numbers - Secure
 End Rem
 Module Random.Secure
 
-ModuleInfo "Version: 1.00"
+ModuleInfo "Version: 1.01"
 ModuleInfo "License: zlib"
 ModuleInfo "Copyright: 2023 Bruce A Henderson"
 
+ModuleInfo "History: 1.01"
+ModuleInfo "History: Fixed use of bmx_secure_next_double()"
+ModuleInfo "History: 1.00"
+ModuleInfo "History: Initial Release."
+
 Import Random.Core
 
 ?macos
@@ -85,17 +90,34 @@ Type TSecureRandom Extends TRandom
 	End Method
 	
 	Method Rnd:Double(minValue:Double = 1, maxValue:Double = 0) Override
-		If maxValue > minValue Return RndDouble() * (maxValue - minValue) + minValue
-		Return RndDouble() * (minValue - maxValue) + maxValue
+?win32
+		If maxValue > minValue Return bmx_secure_next_double(context) * (maxValue - minValue) + minValue
+		Return bmx_secure_next_double(context) * (minValue - maxValue) + maxValue
+?macos
+		If maxValue > minValue Return bmx_secure_next_double() * (maxValue - minValue) + minValue
+		Return bmx_secure_next_double() * (minValue - maxValue) + maxValue
+?linux
+		If maxValue > minValue Return bmx_secure_next_double(fd) * (maxValue - minValue) + minValue
+		Return bmx_secure_next_double(fd) * (minValue - maxValue) + maxValue
+?
 	End Method
 	
 	Method Rand:Int(minValue:Int, maxValue:Int = 1) Override
 		Local Range:Double = maxValue - minValue
+?win32
+		If Range > 0 Return Int( bmx_secure_next_double(context)*(1:Double+Range) )+minValue
+		Return Int( bmx_secure_next_double(context)*(1:Double-Range) )+maxValue
+?macos
 		If Range > 0 Return Int( bmx_secure_next_double()*(1:Double+Range) )+minValue
 		Return Int( bmx_secure_next_double()*(1:Double-Range) )+maxValue
+?linux
+		If Range > 0 Return Int( bmx_secure_next_double(fd)*(1:Double+Range) )+minValue
+		Return Int( bmx_secure_next_double(fd)*(1:Double-Range) )+maxValue
+?
 	End Method
 	
 	Method SeedRnd(seed:Int) Override
+		' no op
 	End Method
 	
 	Method RndSeed:Int() Override