Randomseed in LUA

I am working on code that randomizes numbers. I put math.randomseed(os.time()) inside the loop. The code is as follows:

 for i = 1, 1000 do math.randomseed( os.time() ) j = math.random(i, row-one) u[i], u[j] = u[j], u[i] for k = 1, 11 do file:write(input2[u[i]][k], " ") end file:write"\n" end 

And when I run it several times, the whole output is always the same. Shouldn't a random action prevent retries on restart?

+4
source share
2 answers

Call math.randomseed once at the beginning of the program. There is no point calling it in the loop.

+12
source

Usually the first random values โ€‹โ€‹are not truly random (but in any case they are never really random, it is a pseudo random number generator). Install randomseed first, then randomly generate it several times. Try this code, for example:

 math.randomseed( os.time() ) math.random() math.random() math.random() for i = 1, 1000 do j = math.random(i, row-one) u[i], u[j] = u[j], u[i] for k = 1, 11 do file:write(input2[u[i]][k], " ") end file:write"\n" end 

However, you can try this from http://lua-users.org/wiki/MathLibraryTutorial :

 -- improving the built-in pseudorandom generator do local oldrandom = math.random local randomtable math.random = function () if randomtable == nil then randomtable = {} for i = 1, 97 do randomtable[i] = oldrandom() end end local x = oldrandom() local i = 1 + math.floor(97*x) x, randomtable[i] = randomtable[i], x return x end end 
+2
source

Source: https://habr.com/ru/post/1492667/


All Articles