سلام دوست من.
اگر فقط تصادفی بودن و منحصر بفرد بودن رشته براتون مهم هست می تونید به راحتی از Guid.NewGuid استفاده کنید.
برای جمع آوری لیستی از کلمات فارسی می تونید از واژه نامه ها یا کتاب ها یا صفحات وب استفاده کنید.
و فرضا اگر لیستی از کلمات دارید و فقط قصد دارید به صورت تصادفی مرتبشون کنید می تونید به این صورت عمل کنید:
var rnd=new Random();
Queue<string> randomWords=new Queue<integer>( WordsList.OrderBy(x=> rnd.Next()));
while(randomWords.Any())
Console.WriteLine(randomWords.Dequeue());
برای حذف آیتمهای تکراری از یک مجموعه هم می تونید از متود Enumerable.Distinct یا از کلاس HashSet<T> استفاده کنید.