PDA

View Full Version : سوال: ساخت اعداد به صورت راندوم



ehsanocx
یک شنبه 28 آذر 1389, 11:04 صبح
با سلام
دوستان چطوری می تونم توی vB
50 تا ردیف از 1 تا 10 به صورت رندوم داشته باشم؟
مثلا : 10 8 9 5 4 7 6 3 2 1
9 6 3 8 5 2 7 4 1 10
50 تا ردیف 10 تایی برام تولید کنه؟
ممنون میشم راهنماییم کنید با تشکر

ehsanocx
یک شنبه 28 آذر 1389, 11:11 صبح
چطوری می تونم بعد از این که این اعداد ساخته شدند ب صورت رندوم به هر 2 تا عدد یک مقدار بدم؟
مثلا 8 9 5 4 7 6 3 2 1
بگم اگر 2 1 بود مقدار 80 بده به این اعداد
اگر 3 2 بود مقدار 100 بده به این عدد
بعد می خوام این اعداد رو با هم جمع کنم برای هر 10 عدد می خوام این کار رو کنم به همه این مقدار هایی که به این اعداد می دم رو جمع کنم
مثل : 100+80 + ......= ؟

مقادیری که به این اعداد می دم ثابته برای همه این 50 تا ردیف 1 تا 10 که به صورت راندوم ساخته می شه
ممنون میشم راهنمییم کنید تا این برنامه رو شروع کنم به نوشتن با تشکر

knight-rak
یک شنبه 28 آذر 1389, 13:39 عصر
سلام
اینکه 10 تا 50 تایی رو تولید کنه متوجه نشدم چی میگی ولی کلا اینو بیخیال برای تولید اعداد رندوم باید از کد زیر استفاده کنی


x=int(Rnd*10)

این کد بین 0 تا 10 عدد اتفاقی تولید میکنه
بعد برای اینکه اینهارو میخوای روشون محاسبه انجام بدی پیشنهاد میکنم از آرایه استفاده کن که خیلی کارت راحت میشه یه آؤایه یه بعدی کارت رو راه میندازه
بعد فقط کافیه چک کنی که توی آرایه مثلا y اندیس k با اندیس k+1 چه رابطه ای داره یکی بزرگتر و یا هر چیز دیگه بعد حالا هر کاری میخوای میتونی روی اون اعداد انجام بدی
موفق باشی

ehsanocx
جمعه 03 دی 1389, 21:18 عصر
با تایع rnd اعداد راندوم می سازم مثلا ی خوام اعداد تصادفی بین 1 تا 10 بسازم . اعداد تکراری بین 1 تا 10 زیاد می سازه
باید چیکار کنم ؟ اینطوری میسازه : 1 2 6 5 5 8 7 1 9 4 من نمی خوام هر ردیف 10 تایی با رندوم می سازه اعداد تکراری توش باشه

butterfly8528
شنبه 04 دی 1389, 00:19 صبح
قبل از استفاده از دستور RND کد زیر رو بنویسید :


Randomize Timer

موفق باشید .

pcdownload.bloghaa.com
شنبه 04 دی 1389, 01:25 صبح
یک نکته ظریفی که دوستان به آن اشاره نکردند این است برای ساخت اعداد تصادفی از 0 تا 10.
کد زیر کاملا نا عادلانه است.
چون اگر عدد 3.45 توسط rnd*10 تولید شود با تابع int به 3 تبدیل خواهد شد. اما اعداد بزرگتر از 10 در کد زیر وجود ندارند تا برای 10هم چنین اتفاقی بیافتد بنابر این عدد 10 زمانی بین اعداد تصادفی شما ظاهر خواهد شد که نتیجه rnd*10 دقیقا 10 شود که احتمال بسیار ضعیفی است.

Randomize
x = Int(Rnd * 10)
اگر شما از کد بالا استفاده کنید
یقینا عدد 10 را بین عدد های تصادفیتان نخواهید دید.(بهتره یه با امتحان کنید).
کد پیشنهادی من برای شما کد زیر است برای تولید اعداد تصادفی بین 0 تا 10:


Randomize
x = Int(Rnd * 10.99)
-------------------------------------------------------------------
vahid.ws
SOxSoft@gmail.com

ehsanocx
یک شنبه 05 دی 1389, 09:58 صبح
For i = 0 To 49

For j = 0 To 9
Randomize Timer
x = Int(Rnd * 10)
str = str & CStr(Fix(x)) & " "
b(j) = Fix(x)
Next j
List1.AddItem (str)


رندوم میسازه داخلش عدد بین 0 تا 10 تکراری میسازه

میشه اصلاحش کنید
Randomize
x = Int(Rnd * 10
بازم تکراری وجود داره
تست کنید

knight-rak
یک شنبه 05 دی 1389, 11:36 صبح
خوب دوست من شما کافیه اعداد رو توی آرایه ثبت کنی بعد یه شرط بزاری که کل آرایه رو هر بار از اول تا آخر چک کنه که اعداد تکراری نباشه اگر تکراری بود (قبلا وجود داشت ) اونو اضافه نکنه " وقتی هم که تعداد اندیس های آرایه به مثلا 10 رسید تموم شه .
اینطوری دیگه اعداد تکراری تو آرایه قرار نمیگیره و وقتی هم که تعداد اعداد به مقدار دلخواه رسید پر کردن آرایه متوقف میشه

ehsanocx
یک شنبه 05 دی 1389, 19:01 عصر
چنین کاری رو که گفتین کردم. برنامه هنگ ی کنه. چون باید انقدر عدد چک کنه هربار تا عددی به صورت تصادفی در بیاد و در ارایه قرار بگیره که تکراری در در نیاد.
کسی نمیتونه کمک کنه؟ و راه حلی که تست کرده و جواب گرفته رو ارائه بده؟

ehsanocx
یک شنبه 12 دی 1389, 13:01 عصر
دوستان لطفا راهنماییم کنیید

ali.rezaei7
یک شنبه 12 دی 1389, 13:57 عصر
درود.
ببین این جواب می ده. خودم امتحانش نکردما.

dim s as string,strRnd as string

for i=1 to 50
for j=1 to 10

do
randomize
s=cstr(int(rnd*11))
loop while(Instr(strRnd,s)>0)

strRnd=strRnd & s & " "

next j

strRnd=strRnd & vbcrlf

next i