Задать вопрос
@doctop

Почему при многократном вызове функции нет многократно возвращаемых значений?

Есть работающая функция, которая генерирует слово.
function password()
	local vars = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz'
	local strlengths = string.len(vars)
	print(strlengths)
	local vars1 = ''
	math.randomseed(os.time())
	arrys = {}
	for vars2 in vars:gmatch"." do
		table.insert(arrys, vars2)
	end
	for i = 2, strlengths do
		vars1 = vars1 .. arrys[math.random(2, #arrys)] 
	end	
return vars1
end

Хочу сделать пачку разных слов.
Вызываю несколько раз эту функцию:
list={}
for i=1,10 do
	list[i]=password()
end

А на выходе получается пачка с десятью одинаковыми словами :(
Подскажите, как решить эту проблему?
  • Вопрос задан
  • 47 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 1
dollar
@dollar Куратор тега Lua
Делай добро и бросай его в воду.
function password(num) ----> фикс
  num = (num or 0) * 5 ----> новая логика разных слов
  local vars = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz'
  local strlengths = string.len(vars)
  print(strlengths)
  local vars1 = ''
  math.randomseed(os.time() + num) ----> фикс
  arrys = {}
  for vars2 in vars:gmatch"." do
    table.insert(arrys, vars2)
  end
  for i = 2, strlengths do
    vars1 = vars1 .. arrys[math.random(2, #arrys)] 
  end	
return vars1
end

list={}
for i=1,10 do
  list[i]=password(i) ----> фикс
end

P.S. В саму функцию я не вникал. Если автор вопроса уверен, что она работает хорошо, то и с моими правками будет работать тоже неплохо, во всяком случае для целей получения разных слов. :)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@doctop Автор вопроса
Действительно, проблема была в seed. Огромное спасибо!
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы