A probability wheel is a device or concept that randomly selects outcomes with different probabilities, allocating a higher chance to certain options and lower chances to others.

Script

Non-normalized Probabilites

when gf clicked
delete all of [probabilities v]
add (1) to [probabilities v] // add probabilities
add (2) to [probabilities v]
add (3) to [probabilities v]
delete all of [items v]
add [Item 1] to [items v] // add corresponding items
add [Item 2] to [items v]
add [Item 3] to [items v]
probability wheel

define probability wheel
set [i v] to (0)
set [sum v] to (0)
repeat (length of [probabilites v])
    change [i v] by (1)
    change [sum v] by (item (i) of [probabilities v])
    replace item (i) of [probabilities v] with (sum)
end
set [random number v] to ((sum) * (pick random (0.0) to (1.0)))
set [i v] to (0)
repeat (length of [probabilites v])
    change [i v] by (1)
    if <(item (i) of [probabilities v]) > (random number)> then
        set [output v] to (item (i) of [items v])
        stop [this script v]
    end
end

This script accepts any numerical value for the probability, as long as it does not add to 0 and all numbers are non-negative.

It will normalize the values before choosing a random item.

Normalized Probabilities

when gf clicked
delete all of [probabilities v]
add (0.25) to [probabilities v] // add probabilities
add (0.3) to [probabilities v]
add (0.45) to [probabilities v] 
delete all of [items v]
add [Item 1] to [items v] // add corresponding items
add [Item 2] to [items v]
add [Item 3] to [items v]
probability wheel

define probability wheel
set [random number v] to (pick random (0.0) to (1.0)
set [i v] to (0)
set [sum v] to (0)
repeat (length of [probabilities v])
    change [i v] by (1)
    change [sum v] by (item (i) of [probabilities v])
    if <(sum) > (random number)> then
        set [output v] to (item (i) of [items v])
        stop [this script v]
    end
end

This script requires that the probabilities add up to 1.

How to Use

Set the (probability::list) list to the probabilities for each item. When using the non-normalized script, the probabilities can add up to any number. When using the normalized script, the probabilities must add up to 1. Add the corresponding items into the (items::list) list.

Run the probability wheel::custom block to choose an item with the given probabilities. The (output) variable will be set to the output item.