Category talk:Wren-srandom: Difference between revisions
Content added Content deleted
(Added source code for new 'Wren-srandom' module.) |
(No difference)
|
Revision as of 17:33, 4 July 2021
Source code
<lang ecmascript>/* Module "srandom.wren" */
import "io" for File
/*
SRandom generates secure random integers from the /dev/urandom special file present on Linux or other Unix-like operating systems.
- /
class SRandom {
// Returns an unsigned 32 bit integer between 0 and 4,294,967,295 inclusive. static int() { var n File.open("/dev/urandom") { |file| var b = file.readBytes(4).bytes.toList n = b[0] | b[1] << 8 | b[2] << 16 | b[3] << 24 } return n }
// Returns an integer between start and end, including start but excluding end. static int(start, end) { if (!(start is Num && start.isInteger && start >= 0 && start < 4294967296)) { Fiber.abort("Start must be a non-negative 32 bit integer.") } if (!(end is Num && end.isInteger && end > 0 && end < 4294967296)) { Fiber.abort("End must be a positive 32 bit integer.") } if (start >= end) Fiber.abort("Start must be less than end.") return start + int() % (end - start) }
// Returns an integer between 0 and end, including 0 but excluding end. static int(end) { int(0, end) }
}</lang>