Page 1 of 1

Lua - How can I select numbers from a list randomly, with different probabilities of getting selected for each number?

Posted: 10 Sep 2021, 13:57
by coder212
I have 4 numbers [1, 2, 3, 4]

I want to pick numbers out of this list randomly while giving the most probability to 1 (approx 0.43), next 3 (approx 0.38), and least and equal probabilities to 2 and 4 (approx 0.09 each).

How can I do this in Lua?

This is what I have tried so far.

Code: Select all

codeList = {1, 2, 3, 4}
number = codeList[math.random(#codeList)]

Re: Lua - How can I select numbers from a list randomly, with different probabilities of getting selected for each numbe

Posted: 10 Sep 2021, 14:33
by fferri

Re: Lua - How can I select numbers from a list randomly, with different probabilities of getting selected for each numbe

Posted: 10 Sep 2021, 14:36
by coppelia
Hello,

maybe something like this?

Code: Select all

function getNumber()
    local codeList={1,2,3,4}
    local prob={0.43,0.38,0.095,0.095}
    local r=math.random()
    local index=1
    local v=prob[index]
    while r>v do
        index=index+1
        v=v+prob[index]
    end
    local number=codeList[index]
    return number
end
You can probably find a nicer algorithm though ;)

Cheers

Re: Lua - How can I select numbers from a list randomly, with different probabilities of getting selected for each numbe

Posted: 10 Sep 2021, 15:30
by coder212
This worked! Thank you so much