randomseed in LUA

后端 未结 2 442
清酒与你
清酒与你 2021-01-01 03:13

I am working on a code that randomizes numbers. I put math.randomseed(os.time()) inside a loop. The code goes like this:

for i = 1, 1000 do
  ma         


        
相关标签:
2条回答
  • 2021-01-01 03:22

    Call math.randomseed once at the start of the program. No point calling it in a loop.

    0 讨论(0)
  • 2021-01-01 03:28

    Usually the first random values aren't truly random (but it never is truly random anyway, it's a pseudo-random number generator). First set a randomseed, then randomly generate it a few 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 could 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
    
    0 讨论(0)
提交回复
热议问题