PDA

نسخه کامل مشاهده نسخه کامل : عدد رندوم.



sltavakoli
06-04-2008, 19:43
سلام.

چه جوری میشه از Vb یه عدد با ترکیب حروف گرفت که رندوم انتخاب بشه؟مثلا طول این کاراکتر ها هم 6 تا

باشه؟

lord_ashkan_z
06-04-2008, 21:27
شما مي توانيد 6 عدد رندم را پيدا كنيد و آنها را برابر با keycode قرار دهيد. براي اينكه كاركترهايي مثل اينتر را وارد نكند نيز بنويس اگر عدد رندم برابر keycode دكمه اينتر بو دوباره رندم بگيره

ULF_VB6
07-04-2008, 06:30
حتما میدونید که کد اسکی کاراکترها از 0 تا 255 هستن.
اعداد از 1 تا 31 مخصوص کلیدهایی مثل Enter و Delete و ... هستن.
حالا شما میخوای یه رشته 6 کاراکتری به صورت رندم تولید کنید.

برای اینکار باید 6 تا عدد پیدا کنید که از 32 تا 255 باشن (البته اگه بخواید تولید رشته رو هم محدود کنید، بازم این رنج محدودتر میشه). بعد با استفاده از تابع Chr این کدها رو به معادل کاراکتری شون تبدیل میکنید. و در آخر هم 6 تا حرف دارید که باید بذاریدشون کنار هم تا یه رشته بشن.

برای تولید اعداد توی یه رنج خاص من از این راه استفاده میکنم.
مثلا برای 32 تا 255 :
255-32=223
حالا با استفاده از تابع Rnd یه عدد رندم پیدا میکنیم که کوچیکتر یا مساوی 223 باشه. بعد اون عدد رو با 32 جمع میکنیم.

امیدوارم خوب توضیح داده باشم.

sltavakoli
08-04-2008, 14:58
حتما میدونید که کد اسکی کاراکترها از 0 تا 255 هستن.
اعداد از 1 تا 31 مخصوص کلیدهایی مثل Enter و Delete و ... هستن.
حالا شما میخوای یه رشته 6 کاراکتری به صورت رندم تولید کنید.

برای اینکار باید 6 تا عدد پیدا کنید که از 32 تا 255 باشن (البته اگه بخواید تولید رشته رو هم محدود کنید، بازم این رنج محدودتر میشه). بعد با استفاده از تابع Chr این کدها رو به معادل کاراکتری شون تبدیل میکنید. و در آخر هم 6 تا حرف دارید که باید بذاریدشون کنار هم تا یه رشته بشن.

برای تولید اعداد توی یه رنج خاص من از این راه استفاده میکنم.
مثلا برای 32 تا 255 :
255-32=223
حالا با استفاده از تابع Rnd یه عدد رندم پیدا میکنیم که کوچیکتر یا مساوی 223 باشه. بعد اون عدد رو با 32 جمع میکنیم.

امیدوارم خوب توضیح داده باشم.

اقا.افتضاح توضیح دادید.:31:

بزارید این جوری توضیح بدم:

1-کدی که یه رشته ی عددی 6 رقمی رو به صورت رندوم و بدون ممیز با ما بدهد.

2-کدی که مقدار علاوه بر موارد گفته شده در بالا شامل # و % و $ هم باشه.

امیدوارم متوجه شده باشید

یا حق.

ULF_VB6
08-04-2008, 15:21
من درست توضیح دادم. ایراد از شماست که تا حالا کار نکردید، و متوجه نمیشید.
من چمیدونستم که شما تا حالا با تابع Rnd کار نکردید.

ببین عزیز من، این تابع یه عدد بین 0 تا 1 میده. مقدار 0 میشه، ولی هیج موقع برابر با یک نمیشه.
حالا شما مثلا میخواید یه عدد صحیح بین 0 تا 9 بگیری. چیکار باید بکنید؟

از این کد استفاده میکنید.


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

اون رنج عددی ای هم که گفتم شامل تمام حروف میشه. حتی چیزایی که مطمئنا مایل نیستید تو نتیجه باشن.
مثل اینا :
© ¨ § ¦ ʙ ¤ £ ¢

حالا به خودتون یه مقدار زحمت بدید و یه مقدار فسفر مصرف کنید، ببنید با توجه به این مطالبی که گفتم چطوری میتونید یه کد 6 حرفی از حروفی که به صورت رندم تولید شدن ایجاد کنید. :10:

اگه نتونستی :41: ، اون موقع بگو، بازم بیشتر راهنماییت کنم!!!. البته فکر کنم، دیگه باید کد رو به صورت کامل براتون بنویسم. :19:

sltavakoli
08-04-2008, 19:57
پس از 10 دقیقه فسفر سوزوندت فهمیدم.

حالا فقط 2 تا مشکل دارم:

چی کار کنیم تا حروف فارسی توی رشته ای که میخواهیم بسازیم نباشه؟

2-تابع rnd چه جوری محدود میشه؟

lord_ashkan_z
08-04-2008, 20:04
البته من يه چيزي بگم اينكه تمام كاركترهاي كامپيوتر 256 تا نيست.
مثلا من در موقع نصب ويندوز تمام زبان هاي آسياي شرقي را فعال كردم پس اين ها هم جز كاركترها حساب ميشه.

شما مي توني دامنه كاركتر هاي مورد نظرتون را پيدا كنيد و بين آنها رندوم بديد.

ULF_VB6
08-04-2008, 20:31
البته من يه چيزي بگم اينكه تمام كاركترهاي كامپيوتر 256 تا نيست.
مثلا من در موقع نصب ويندوز تمام زبان هاي آسياي شرقي را فعال كردم پس اين ها هم جز كاركترها حساب ميشه.

شما مي توني دامنه كاركتر هاي مورد نظرتون را پيدا كنيد و بين آنها رندوم بديد.
بله تایید میشه.

ULF_VB6
08-04-2008, 21:16
بفرمایید
اینم کدی که خواستید
کمتر از 10 دقیقه شد.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

ULF_VB6
08-04-2008, 21:25
فقط یه توضیحی بدم.
اون رشته ی st ، کل کاراکترهایی رو که می خواید توی رشته ی نهایی باشن، اونجا بدون فاصله بنویسید.

اون حلقه اول هم برای این گذاشتم که کاراکترها تکراری انتخاب نشن.
اگه حذف بشه، هر بار که این کد اجرا بشه، یه رشته یکسان میده.

ULF_VB6
09-04-2008, 15:16
جناب توکلی. من این کد رو با این که مطمئن بودم که کار میکنه، مجددا تست کردم. بدون مشکل اجرا شد.

لطفا همینجا تو فروم مشکلتون رو بنویسید، این طوری راحت تر میشه مشکلتون رو حل کرد.

بهرام_62
10-04-2008, 20:24
سلام دوستان
گفتم یک تاپیک دیگه نزم و مشکلم رو همینجا بگم
می خواستم بگم که تابع رندوم یک تابع چرته[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
اعصابم رو ریخته به هم
این اصلا شانسی نیست
فقط به ترتیب اعدادی رو که از قبل براش تعریف شده رو خروجی میده
باور نمی کنید؟؟؟؟؟؟؟؟؟؟؟؟؟؟
توی یک دکمه توی وی بی تایپ کنید:

Private Sub Command1_Click()
Text1.Text = Rnd()
End Sub
حالا برنامه رو اجرا کنید
با هر کلیک به ترتیب این اعداد میاد:
0.7055475
0.533424
0.5795186
0.2895625
0.301948
0.7747401
1.401764E-02
و .....
اینا همیشه همیناست
یعنی اگر دوباره برنامه رو اجرا کنید دوباره اینا از اول شروع میشه[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
این نامردی نیست؟[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
من یک تابع رندوم واقعی می خوام[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
جون من هر کی بلده جواب بده

بهرام_62
13-04-2008, 18:57
هیچکی نیست بدونه باید چکار کنم؟

ULF_VB6
14-04-2008, 09:59
دوست عزیز، اگه کمی به کدی که من تو صفحه قبل نوشتم دقت میکردید، متوجه میشدید که این مشکل رو حل کردم.

کافیه این کد رو قبل از تابع Rnd به کار ببرید (یا یه چیزی شبیه به همین)

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

این یک حلقست که باعث میشه تابع Rnd به تعداد n بار تکرار بشه. و این مشکل حل بشه.

Js0ner
14-04-2008, 20:00
سلام دوستان
گفتم یک تاپیک دیگه نزم و مشکلم رو همینجا بگم
می خواستم بگم که تابع رندوم یک تابع چرته[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
اعصابم رو ریخته به هم
این اصلا شانسی نیست
فقط به ترتیب اعدادی رو که از قبل براش تعریف شده رو خروجی میده
باور نمی کنید؟؟؟؟؟؟؟؟؟؟؟؟؟؟
توی یک دکمه توی وی بی تایپ کنید:

حالا برنامه رو اجرا کنید
با هر کلیک به ترتیب این اعداد میاد:
0.7055475
0.533424
0.5795186
0.2895625
0.301948
0.7747401
1.401764E-02
و .....
اینا همیشه همیناست
یعنی اگر دوباره برنامه رو اجرا کنید دوباره اینا از اول شروع میشه[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
این نامردی نیست؟[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
من یک تابع رندوم واقعی می خوام[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
جون من هر کی بلده جواب بده

من Vb کار نیستم کارم کیجنینگه و کیجن نویسی رو تو Vb خیلی خوب بلدم. بهتره که Randomize Timer را قبل از اوون کدت بکار ببری! :11:

Js0ner
15-04-2008, 23:19
چطوی میشه بین دو عدد مثلا 97 و 122 راندوم زد. من که هر کاری می کنم غیر از اینها هم راندوم می خوره :41:

ULF_VB6
16-04-2008, 09:05
من به این سوال هم تو صفحه اول پاسخ دادم (اگه دقت میکردید)

122 رو از 97 کم میکنید. میشه 25
حالا یه عدد رندم میکنید که 0 تا 25 باشه.
بعد عدد به دست اومده رو به اضافه ی 97 میکنید.

همین.

بهرام_62
16-04-2008, 21:09
دوست عزیز، اگه کمی به کدی که من تو صفحه قبل نوشتم دقت میکردید، متوجه میشدید که این مشکل رو حل کردم.

کافیه این کد رو قبل از تابع Rnd به کار ببرید (یا یه چیزی شبیه به همین)

مرسی[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
ولی این یک جور کلکه
یعنی وی بی با اینهمه عظمتش یک کد رندوم واقعی نداه[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
البته وی بی عظمتی هم نداره[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
یک سوال؟
اصلا کلا تو زبان های دیگه برنامه نویسی کدی هست برای رندوم؟
یک سوال دیگه؟
شما برای گرفتن ثانیه یک زمان از کد زیر استفاده می کنید:
Second (Now)
اگر بخوام صدم ثانیه یک زمان رو بگیرم باید چکار کنم؟[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

lord_ashkan_z
16-04-2008, 21:42
در مورد سوال اول: بله در همه. تا اون جا كه من ديدم دستور random در همه جواب ميده ولي در هر زبان به صورت مخفف ي نيز بيان مي شود.

در مورد سوال دوم به تاپيك مسائل پيشرفته در تالار VB مراجعه كن

Smafias
24-04-2008, 17:47
دوست عزیز، اگه کمی به کدی که من تو صفحه قبل نوشتم دقت میکردید، متوجه میشدید که این مشکل رو حل کردم.

کافیه این کد رو قبل از تابع Rnd به کار ببرید (یا یه چیزی شبیه به همین)

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

این یک حلقست که باعث میشه تابع Rnd به تعداد n بار تکرار بشه. و این مشکل حل بشه.


چرا یک کد غیر منطقی رو استفاده میکنید - از شما بعیده

1-اگر من این کد رو در همین لحظه اجرا کنم و فردا هم دقیقا همین لحظه اجرا کنم نتیجه یکسان میشود.
2-کلی از سی پی یو کار میکشی که چی بشه (بیچاره سی پی یو)

عوض این همه دردسر میتونید از تابع Randomize استفاده کنید.

البته اون کدی که تو صفحه قبل نوشتین هم بازهم پیچیده است - میشد خیلی ساده تر نوشت.

sltavakoli
24-04-2008, 19:37
میشه بگید چه جوری با Randomize کار میکنن؟

بهرام_62
24-04-2008, 21:31
چرا یک کد غیر منطقی رو استفاده میکنید - از شما بعیده

1-اگر من این کد رو در همین لحظه اجرا کنم و فردا هم دقیقا همین لحظه اجرا کنم نتیجه یکسان میشود.
2-کلی از سی پی یو کار میکشی که چی بشه (بیچاره سی پی یو)

عوض این همه دردسر میتونید از تابع Randomize استفاده کنید.

البته اون کدی که تو صفحه قبل نوشتین هم بازهم پیچیده است - میشد خیلی ساده تر نوشت.
راست میگه منم این کد رو به معلمم نشون دادم کلی بهم خندید[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]


میشه بگید چه جوری با Randomize کار میکنن؟


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
گر امتحان کنی می بینی که هر دفعه یک عدد جدید رو نشون می ده:21:

ULF_VB6
26-04-2008, 09:26
چرا یک کد غیر منطقی رو استفاده میکنید - از شما بعیده

1-اگر من این کد رو در همین لحظه اجرا کنم و فردا هم دقیقا همین لحظه اجرا کنم نتیجه یکسان میشود.
2-کلی از سی پی یو کار میکشی که چی بشه (بیچاره سی پی یو)

عوض این همه دردسر میتونید از تابع Randomize استفاده کنید.

البته اون کدی که تو صفحه قبل نوشتین هم بازهم پیچیده است - میشد خیلی ساده تر نوشت.


ببخشید. معذرت.

از قدیم گفتن: همه چیز را همگان دانند.