PDA

View Full Version : مبتدی: حذف رشته ی تکراری که توسط random string تولید شده.



voice.of.silence
چهارشنبه 18 بهمن 1396, 21:54 عصر
سلام دوستان:
من می خوام که با استفاده از کلاس random رشته های تصادفی تولید کنم ولی برخی از رشته های تولید شده به صورت چند مرتبه ایجاد می شند.
اول اینکه چگونه می توان رشته های تکراری رو پاک کرد و به صورت کنترل شده ایجاد کرد؟
دوم اینکه می خوام که رشته ی تولید شده رو از لحاظ معنایی برسی کنم که با معنا باشد یعنی اینکه واژه ی زبان فارسی باشد اما نتونستم یک لیست کامل از لغات زبان فارسی رو پیدا کنم .
وارد کردن واژگان زبان فارسی به صورت دستی بسیار مشکل و زمان بر است.

خوشحال می شم اگه منو در حل این مشکلات یاری نمایید.
با سپاس

رامین مرادی
پنج شنبه 19 بهمن 1396, 08:27 صبح
برا اینکه بدونی کد ایجاد شده تکراری هست یا نه باید کدهای استفاده شده رو یه جا نگه داری. مثلا تو یه فایل.
هر بار که کد جدید ایجاد میکنی بری تو فایل بگردی اگه این کد بود یه کد جدید تولید کن و اونم تو فایل بگرد. تا زمانی این کارو بکن که کد تولید شده تو فایل نباشه. ممکنه همون اول کد یکتا داشته باشی. ممکنه هم مثلا بعد چندبار این عمل صورت بگیره.

برا فارسی هم باید خب کلمات رو داشته باشید. راه دیگه ای نیست.اگه اشتباه نکنم تو همین فروم یک دیتابیس لغات انگلیسی به فارسی بود. کافیه سرچ کنید. میتونید از لغات فارسی اون استفاده کنید. دیتابیس اکسس بود.

مهرداد صفا
جمعه 20 بهمن 1396, 14:07 عصر
سلام دوست من.
اگر فقط تصادفی بودن و منحصر بفرد بودن رشته براتون مهم هست می تونید به راحتی از Guid.NewGuid (https://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=EN-US&k=k%28SYSTEM.GUID.NEWGUID%29;k%28VS.OBJECTBROWSER% 29;k%28TargetFrameworkMoniker-%22.NETFRAMEWORK%2cVERSION%3dV4.0%22%29&rd=true) استفاده کنید.
برای جمع آوری لیستی از کلمات فارسی می تونید از واژه نامه ها یا کتاب ها یا صفحات وب استفاده کنید.
و فرضا اگر لیستی از کلمات دارید و فقط قصد دارید به صورت تصادفی مرتبشون کنید می تونید به این صورت عمل کنید:


var rnd=new Random();
Queue<string> randomWords=new Queue<integer>( WordsList.OrderBy(x=> rnd.Next()));
while(randomWords.Any())
Console.WriteLine(randomWords.Dequeue());


برای حذف آیتمهای تکراری از یک مجموعه هم می تونید از متود Enumerable.Distinct (https://msdn.microsoft.com/en-us/library/bb348436(v=vs.110).aspx) یا از کلاس HashSet<T> (https://msdn.microsoft.com/en-us/library/bb359438(v=vs.110).aspx) استفاده کنید.