1. I define a set of possible moves (eg. straight ahead, left turn, junction, etc). One possible move is a dead-end, which looks a bit like a house in my interpretation.
2. Each move is assigned a relative weight (eg. continuing straight ahead 10x more likely than turning left).
3. Each iteration, for each of the roads under construction, a random move is selected. Some moves are impossible (based on other roads already drawn on the map) and so it will ensure not to select one that would result in a collision. At worst, it will terminate the road with a dead-end.
4. Repeat forever, until every road has terminated in a dead-end.
Most of the script itself is dealing with the rendering logic. To avoid collisions I maintain a 2D array of all visited points.