RealisticData.com
Your mock data generation project should be progressive. Your mock data generation tool should support gradual improvement of your mock data.
Let's say you built "school donation management system" and you are making a mock data for donation list. You will have student name, parent name, and donation amount. How do you go about it?
At first, you could throw in person's name, another person's name, and an amount. You review the result, and find amount doesn't look realistic. We normally get around $50 up to $1000, but most of them are on the lower end.
So you change your amount configuration from "random amount" to use "exponential distribution where minimum is $50, maximum is $1000, and most of them should be towards $50 range."
Now it looks better, but then you realize your student's last name should be the same as parent's last name most of the time.
So you change your parent's name configuration to use the same as student's last name 90% of the time, but for the 10% use different last name.
Now you can't tell if it is fake or real yourself, and you build demo system with the mock data with 50 donations. You prepare demo script based upon the names you see on the mock data.
Then you learn you should throw in 1,000 donations in the list to demonstrate chart feature. You generate data, and learn all the names are different now. You have to rewrite the demo script from scratch. Darn it...
To avoid the same trouble in the future, you make your data generation configuration to use seeded randomness. Now whenever you generate data, it will be always the same as long as you don't change any of the configuration.
Except, that now you need to add StudentId column as the first column. Would it screw the randomness and produce whole new data?
RealisticData.com recognizes the nature of mock data generation project. It is progressive effort. It needs to be agile. But it needs to produce predictable randomness.
RealisticData.com uses column level predictability, so adding StudentId as the first column will not disturb and change the other columns' values.