How it works:
1. Generate one single random face
- Generate different facial features separately in random styles. There's a class for every facial feature. Some features are shown or not shown depending on the chances I set.
- Combine the features
2. Repeat the first step to generate multiple faces
- Use a nested for loop to place faces into rows and columns
- Add some random location transformation to each face
- Add some emotional elements (speech bubbles and hearts)