When you try do that for real problems, it can sometimes be difficult to sample from complex probability distributions/models efficiently in a way that is representative. There are lots of tricks around that, like most topics it's a black-hole of details. But it still boils down to randomly testing options.
Look at the source code, even in C it's really short and simple: https://github.com/msuzen/isingLenzMC/blob/master/src/isingL...
Statisticians like to do this kind of intellectual inflation, there are many such scary terms with simple meanings: "Markov Chain" is a process who's next state depends only on the current state, "stochastic" is a straight-up synonym for "random"... Illegitimi non carborundum!
It's not published yet, but already a classic. (Might be more intermediate than beginner, though.)
For something a bit more gentle, I also recommend chapter 29 of this book: https://www.inference.org.uk/mackay/itila/book.html
Once you understand and use this approach, you can figure out most other approaches you need to use.
https://archive.org/details/TheMonte-carloMethodlittleMathem...