Last active
February 21, 2024 04:16
-
-
Save haggen/2fd643ea9a261fea2094 to your computer and use it in GitHub Desktop.
Random strings in Lua
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
math.randomseed(os.time()) | |
local charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890" | |
function string.random(length) | |
if length > 0 then | |
return string.random(length - 1) .. charset:sub(math.random(1, #charset), 1) | |
else | |
return "" | |
end | |
end |
Perthys
commented
Aug 25, 2021
•
math.randomseed(os.time()) local character_set = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" local string_sub = string.sub local math_random = math.random local table_concat = table.concat local character_set_amount = #character_set local number_one = 1 local default_length = 10 local function generate_key(length) local random_string = {} for int = number_one, length or default_length do local random_number = math_random(number_one, character_set_amount) local character = string_sub(character_set, random_number, random_number) random_string[#random_string + number_one] = character end return table_concat(random_string) end
thank you psu man
local charset = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890"
math.randomseed(os.clock())
function randomString(length)
local ret = {}
local r
for i = 1, length do
r = math.random(1, #charset)
table.insert(ret, charset:sub(r, r))
end
return table.concat(ret)
end
A small improvement over simplicity and speed
pseudo random, but super fast:
for i = 1, 10 do
print( tostring({}):sub(10) )
end
40ae13c8
406c0640
41954060
41a91220
40ae1ac8
4195b718
41958260
41a3ea10
41a3acf0
41a3a978
local sets = {{97, 122}, {65, 90}, {48, 57}} -- a-z, A-Z, 0-9
local function string_random(chars)
local str = ""
for i = 1, chars do
math.randomseed(os.clock() ^ 5)
local charset = sets[ math.random(1, #sets) ]
str = str .. string.char(math.random(charset[1], charset[2]))
end
return str
end
abc = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","r","s","t","u","v","z","y","w","q","1","2","3","4","5","6","7","8","9","0"}
local string = ""
function GeneratedString()
for i=1,35 do
rdm = math.random(1,35)
string = string..abc[rdm]
end
return string
end
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment