tabula is a backgammon engine I recently created.
The engine builds on principles described by the author of the Motif engine here: https://bkgm.com/motif/engine.html
You can play against the engine right now at https://bgammon.org
How exactly do you simulate die rolls? Do you actually use a random number a bunch of times and average? Because its 2d6, it has a known distribution. You could iterate over all combinations and use the probably distribution to weight each result. How did you accomplish this?
I use the crypto/rand package which provides cryptographically secure random numbers. I verified the distribution when implementing it in the server and it consistently meets the expected distribution.