math.random() и float

7jizzle

Участник
Автор темы
238
14
Версия MoonLoader
.026-beta
Как заставить math.random() выдавать число в диапазоне в float? Я подаю ему числа 1.25 и 1.50, а он рандомит, но выдаёт число за точкой вообще. Как быть с этой проблемой?
 
Решение
И еще если я правильно понял, то ты хотел делать рандом у float, то вот функция:


Lua:
math.randomseed(os.time())

function randomFloat(min, max, precision)
    local range = max - min
    local offset = range * math.random()
    local unrounded = min + offset
    if not precision then
        return unrounded
    end
    local powerOfTen = 10 ^ precision
    return math.floor(unrounded * powerOfTen + 0.5) / powerOfTen
end

print(randomFloat(1.20, 5.80, 3))

Пояснение на примере randomFloat(1.20, 5.80, 3):

  • Где 1.20 - начальное число для рандом float.
  • Где 5.80 - конечное число для рандом float.
  • Где 3 - точность, с которым будет сгенерировано число, то есть: 3 знака после точки, пример: 5.289

    Соответственно если...

7jizzle

Участник
Автор темы
238
14
Lua:
math.randomseed( os.time() )
print(math.random() + math.random(1, 10)) -- (1, 10) - генерируемое основное число,  math.random() - float, для округления используй math.floor
Пояснительную бригаду для чайников.
 

#Northn

Police Helper «Reborn» — уже ШЕСТЬ лет!
Всефорумный модератор
2,633
2,479
Пояснительную бригаду для чайников.
1606161422351.png
 
  • Нравится
Реакции: 7jizzle

wulfandr

Известный
638
258
И еще если я правильно понял, то ты хотел делать рандом у float, то вот функция:


Lua:
math.randomseed(os.time())

function randomFloat(min, max, precision)
    local range = max - min
    local offset = range * math.random()
    local unrounded = min + offset
    if not precision then
        return unrounded
    end
    local powerOfTen = 10 ^ precision
    return math.floor(unrounded * powerOfTen + 0.5) / powerOfTen
end

print(randomFloat(1.20, 5.80, 3))

Пояснение на примере randomFloat(1.20, 5.80, 3):

  • Где 1.20 - начальное число для рандом float.
  • Где 5.80 - конечное число для рандом float.
  • Где 3 - точность, с которым будет сгенерировано число, то есть: 3 знака после точки, пример: 5.289

    Соответственно если будет randomFloat(1.20, 5.80, 2), результат будет например: 2.91 и так далее.
 
  • Нравится
Реакции: 7jizzle