Starting to have slightly more concrete idea:

Let’s say we start with a 19 x 19 table. There’s an option to normalize the cells (make them add up to 1, specifically 1 / 19 x 19) but here we start them initialized to 1s. (Ignoring stone-free margin in this example.)

Let’s go to the update phase after a stone is placed. In neighbor-counting (counting stones within certain radius), cells within the radius is incremented by 1. In weighted mean distance, we increment cells within distance 1, then within distance 2, then within distance 3, … (The cells near the placed stone are incremented more often.)

When we place a new stone, we make each point inverse as likely as the cell in the table.

These numbers could lead to overblown results and probably need to be adjusted, but it’s a start.

More refined method might be to make a update/scaling table after each stone placement and do a cell-wise multiplication. I wonder if it can be formulated in terms of matrix multiplications, even though I don’t know if there’s any advantage to it. Normalizing would also make the numbers easier to interpret.

EDIT:

When I wrote “weighted mean distance”, I actually only took into acount the distance, so I guess they are not the same.

EDIT2:

If we could make something that works well, I have an idea of a separate randomized (and handicapped) ladder analogous to randbats in pokemon showdown. It’s a junky idea and might offend some players, but sounds fun for me.