PDA

View Full Version : ایجاد متن تصادفی



mostafabestman
یک شنبه 21 آذر 1389, 15:52 عصر
سلام.میخوام داخل یه حلقه یه خروجی متن تصادفی بگیرم/تعداد حروف قابل تغییر و بستگی به حلقه باید داشته باشه.از چی کار کنم.حروف فارسی و انگلیسی باشه
تأکید میکنم فقط حروف و تصادفی
مثلأ:
kjioasdfhuiewrtnv
نتاسثبهعادردتقثعهل
سهخیتب شثقلهت شثقلخهت
oishjuh aerg xdgbrth

محسن شامحمدی
یک شنبه 21 آذر 1389, 16:52 عصر
من قبلا چنین چیری ساخته بودم (http://barnamenevis.org/showthread.php?247044-%DA%A9%D9%84%D8%A7%D8%B3%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%AA%D9%88%D9%84%DB%8C%D8%AF-%DA%A9%D8%A7%D8%B1%D8%A7%DA%A9%D8%AA%D8%B1%D9%87%D 8%A7%DB%8C-%D8%AA%D8%B5%D8%A7%D8%AF%D9%81%DB%8C-%D8%A8%D8%A7-%D8%AA%D8%B9%D8%AF%D8%A7%D8%AF-%D9%85%D9%88%D8%B1%D8%AF-%D9%86%D8%B8%D8%B1&highlight=)
ولی فقط متن انگلیسی و عدد تولید می کنه و متن فارسی تولید نمی شه.
با یک دستکاری کوچولو توی کلاس می تونی فارسی هم بهش اضافه کنی.

http://barnamenevis.org/images/attach/rar.gif RandomChar.rar‏ (http://barnamenevis.org/attachment.php?attachmentid=56468&d=1284628475) (434 بایت)

mostafabestman
یک شنبه 21 آذر 1389, 16:58 عصر
یه کد کوتاه میخوام.نه این...خلاصه و ساده

یه نکته این که از Chr میشه استفاده کرد.ولی چه طور داخل رندم بزاری که اعداد بالای 65 رو تولید کنه.....و یا حروف فارسی.....

mehdi.mousavi
یک شنبه 21 آذر 1389, 19:04 عصر
یه کد کوتاه میخوام.نه این...خلاصه و ساده

یه نکته این که از Chr میشه استفاده کرد.ولی چه طور داخل رندم بزاری که اعداد بالای 65 رو تولید کنه.....و یا حروف فارسی.....


سلام.
شما می تونید به این شکل عمل کنید:


Dim rnd As New Random()
Dim sb As New StringBuilder()

Dim chars As String = "ابپتثجچحخدذرزژسشعغفقکگلمن وهی"
Dim totalChars As Integer = 20, length As Integer = chars.Length
For i As Integer = 0 To totalChars - 1
sb.Append(chars(rnd.[Next](0, length)))
Next
البته شما می تونید جای اینکه یه string تعریف کنید و توش Character های مورد نظرتون رو بذارید، از کد 0x0627 تا 0x63a بعلاوه کدهای 0x641 تا 0x649 استفاده کنید. اما اینطوری 4 حرف پ ژ گ چ رو نخواهید داشت...
این به این معنی نیست که نمیشه از کد Hex اون حروف استفاده کرد، اما فکر میکنم بخاطر فاصله ای که بین حروف میفته، کدی که باید بنویسید چندان Efficient نخواهد بود.

موفق باشید.

پاورقی:


کد فوق توسط این ابزار (http://www.developerfusion.com/tools/convert/csharp-to-vb/)، از کد C# ای که نوشته ام تولید شده، در نتیجه ممکنه ایراد داشته باشه. خودتون بررسی کنید، چون من از VB سر در نمیارم.
دقت کنید که برای تولید اعداد Random بهتره از Seed ای استفاده کنید که توسط RNGCryptoServiceProvider ایجاد شده باشه. من قبلا در این مورد در یکی از پستهام توضیح داده ام...

Reza,M
یک شنبه 21 آذر 1389, 23:28 عصر
با سلام
دوست عزيز فكر كنم با اين كد يه جوري كارت راه بيوفته


Dim ch As Char
Dim i As Integer
Label1.Text = ""
For i = 1 To 6
ch = Chr(65 Or 90 * Rnd())
Label1.Text += ch
Next