نمایش نتایج 1 تا 18 از 18

نام تاپیک: توليد عدد تصادفي بين 1 تا 2000

  1. #1

    Question توليد عدد تصادفي بين 1 تا 2000

    سلام عليکم
    من نياز دارم که يک عدد تصادفي توليد بشه بين يک تا دوهزار
    من با تابع Rnd امتحان کردم ولي جواب نداد يعني اون عددي رو که ميخوام توليد کنه توليد نميکنه
    حالا اساتيدان و دوستان گرامي چگونه اين کار رو انجام بدم؟لطفا به ساده ترين صورت توضيح دهيد.

  2. #2
    کاربر دائمی آواتار mr-adler
    تاریخ عضویت
    شهریور 1390
    محل زندگی
    همدان
    پست
    385

    نقل قول: توليد عدد تصادفي بين 1 تا 2000

    با سلام
    ببین به کارت میاد:
    a = Int(Rnd * 2000)
    Text1.Text = a

  3. #3

    نقل قول: توليد عدد تصادفي بين 1 تا 2000

    آره درسته
    فقط:
    ميخوام چک کنه ببينه اگه تو تکست باکس1 قبلا يه عددي بوده ديگه اون رو توليد نکنه،بانک اطلاعاتي که ميخوام درست کنم عدد رو ثبت ميکنه
    حالا اين رو چه جوري اعمال کنم؟تابعي براي چک کردن اعداد (در ديتاگريد)وجود داره؟

    و اين کد شما عدد 0 رو هم توليد ميکنه من نميخوام عدد 0 توليد بشه!


    ممنون

  4. #4

    نقل قول: توليد عدد تصادفي بين 1 تا 2000

    دوستان
    حالا که دارم ميبينم من ميخوام کدهايي رو براي يک فورم توليد بکنه
    ميشه کاري کرد که از يک شروع به توليد کدها بکنه مثلا تو يک تايمر بنويسيم همچين چيزيText1=text1+1
    که اگه اولين فورم من عدد يک رو تو ديتاگريد تو بانک اکسس ثبت کرد بعد که خواستم يه فورم ديگه چاپ کنم اون بشه 2 و بعدي 3 و به همين صورت ادامه بده

    سپاس گذارم

  5. #5
    کاربر دائمی آواتار mr-adler
    تاریخ عضویت
    شهریور 1390
    محل زندگی
    همدان
    پست
    385

    نقل قول: توليد عدد تصادفي بين 1 تا 2000

    و اين کد شما عدد 0 رو هم توليد ميکنه من نميخوام عدد 0 توليد بشه!
    a = Int(Rnd * 1999) + 1
    Text1.Text = a

    ميخوام چک کنه ببينه اگه تو تکست باکس1 قبلا يه عددي بوده ديگه اون رو توليد نکنه،بانک اطلاعاتي که ميخوام درست کنم عدد رو ثبت ميکنه
    این مورد رو دقیق اطلاع ندارم بزار دوستانی که بلدن جواب بدن . اما فکر نکنم امکان پذیر باشه ...

  6. #6

    نقل قول: توليد عدد تصادفي بين 1 تا 2000

    این مورد رو دقیق اطلاع ندارم بزار دوستانی که بلدن جواب بدن . اما فکر نکنم امکان پذیر باشه ...
    چرا امکانش هست فقط يه کم سخت ميشه که بايد امتحان کنم.اگه دوستاني که همچين چيزي که ميخوام بشه (پست چهارم)بتونن انجام بدن لطفا اينجا مطرح کنند.

    از شما و بقيه ي دوستان ممنونم

  7. #7

    نقل قول: توليد عدد تصادفي بين 1 تا 2000

    ميخوام چک کنه ببينه اگه تو تکست باکس1 قبلا يه عددي بوده ديگه اون رو توليد نکنه،بانک اطلاعاتي که ميخوام درست کنم عدد رو ثبت ميکنه
    درمورد بانک اطلاعاتی نمیدونم. اما میشه اون عدد رو که توی تکست باکس هست توی متغیری ذخیره کنی و بعد شرط بذاری که اگه جواب تابع، عدد ذخیره شده در اون متغیر بود، تابع یه بار دیگه اجرا بشه. در این صورت تابع هروقت عددی که قبلا در تکست باکس بوده رو تولید کرد یه بار دیگه اجرا میشه و یه عدد دیگه تولید میشه.
    نمیدونم بدردتون میخوره یا نه.

  8. #8
    کاربر دائمی آواتار mr-adler
    تاریخ عضویت
    شهریور 1390
    محل زندگی
    همدان
    پست
    385

    نقل قول: توليد عدد تصادفي بين 1 تا 2000

    درمورد بانک اطلاعاتی نمیدونم. اما میشه اون عدد رو که توی تکست باکس هست توی متغیری ذخیره کنی و بعد شرط بذاری که اگه جواب تابع، عدد ذخیره شده در اون متغیر بود، تابع یه بار دیگه اجرا بشه. در این صورت تابع هروقت عددی که قبلا در تکست باکس بوده رو تولید کرد یه بار دیگه اجرا میشه و یه عدد دیگه تولید میشه.
    نمیدونم بدردتون میخوره یا نه.
    ممکنه سورس بزارید . ممنون

  9. #9

    نقل قول: توليد عدد تصادفي بين 1 تا 2000

    adad= text1.text

    if Int(Rnd * 1999)+1= adad then

    labal1.caption= Int(Rnd * 1999)+1

    end if

    راستش ویژوال بیسیکم نصب نیس و اگه اشتباه از نظر syntax و... داره اصلاح کنین.و بهم بگین.
    adad متغیری که مقدار تکست باکسو ذخیره میکنه.بعد نوشتم که اگه جواب تابع برابر با اون عدد بود، مثلا در کپشن یه لیبلی مقدار جدید تابع نمایش داده بشه. نمیدونم این کد کار میکنه یا نه. امتحان کنید؟!

  10. #10
    کاربر دائمی آواتار returnx
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    ?
    پست
    1,190

    نقل قول: توليد عدد تصادفي بين 1 تا 2000

    ببینید اینچیزی که دوستمون در مورد تولید نکردن عدد صفر کفتن درسته اما اصولی نیست چون یکی به عدد تولید شده اظافه میشه و اگه خود 2000 تولید بشه میشه 2001 اما فرمول درست چیه!؟
    برای تولید یک عدد در یک بازه با تابع Rnd چه در VB6 و چه در C++‎ شما باید از این فرمول استفاده کنید:
    Dim a As Integer
    a = Rnd * (High - Low + 1) + Low

    بطور مثال برای 1 تال 2000:
    a = Rnd * (2000 - 1 + 1) + 1

    اما برای سوال دومتون من برای بازیMinsweeper که نیاز داشتم 10 عدد تصادفی غیر تکراری تولید کنم از کد زیر استفاده میکردم:
    Randomize Timer
    p = 10
    While p > 0

    bomb(p) = Rnd * (81 - 1 + 1) + 1

    For l = 1 To 10

    If bomb(p) = bomb(l) Then
    bomb(p) = Rnd * (81 - 1 + 1) + 1
    End If
    Next l
    p = p - 1
    Wend

    اما شما چون نیاز ندارید اعداد تولید شده رو نگه دارید ، میتونید ساده ترش کنید و با یک شرط بگید هر موقع عدد تولید شده با عدد تو Textbox مساوی بود دوباره یک عدد دیگه تولید بشه تا زمانی که عدد تکراری نباشه...
    موفق باشید.../

  11. #11

    نقل قول: توليد عدد تصادفي بين 1 تا 2000

    سلام ميشه هر دو کدي که گذاشتين رو به طور ساده توضيح بديد
    Dim a As Integer
    a = Rnd * (High - Low + 1) + Low
    و
    Randomize Timer
    p = 10
    While p > 0

    bomb(p) = Rnd * (81 - 1 + 1) + 1

    For l = 1 To 10

    If bomb(p) = bomb(l) Then
    bomb(p) = Rnd * (81 - 1 + 1) + 1
    End If
    Next l
    p = p - 1
    Wend
    اما شما چون نیاز ندارید اعداد تولید شده رو نگه دارید
    چرا من نياز دارم که اونهارو نگه دارم و من براي ثبت فاکتور ها ميخوام تو ديتابيسم ثبت بشه براي هر فاکتوري که ثبت ميکنم.و نميخوام که همينجوري عدد توليد بشه براي کدها.ميخوام هر موقع فاکتور1 رو ثبت کردم توي کدکالا به صورت اتوماتيک بنويسه يک و براي فاکتور دوم 2 و ...


    ممنون

  12. #12
    کاربر دائمی آواتار returnx
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    ?
    پست
    1,190

    نقل قول: توليد عدد تصادفي بين 1 تا 2000

    سلام ميشه هر دو کدي که گذاشتين رو به طور ساده توضيح بديد
    چشم ، کد اول:
    برای تولید اعداد تصادفی در یک بازه خاص باید از فرمولی که گزاشتم استفاده بشه ، به طور مثال شما می خوای بین 10 تا 100 اعداد تصادفی تولید کنید ، اگه شما بنویسید Rnd *100 اونموقع اعدادی که تولید میشه ممکنه که 0 تا 100 هم جزوشن باشه پس شما نیاز دارید از فرمولی استفاده کنید که فقط بین 10 تا 100 اعداد تصادفی تولید کنه و اون فرمول اینه:
    y=(High-Low+1)+low اما High و Low چین!؟ Low بازه پایین ماست یعنی 10 و High بازه نهایی ما یعنی 100 با این رابطه و با استفاده از تابع Rnd میتونید اعدادی تولید کنید که همیشه بین 10 تا 100 باشند به اینصورت:
    Dim a As Integer
    a = Rnd * (100 - 10 + 1) + 10

    اما کد دوم :
    من تو کد دوم باید اعداد تصادفی رو برای مشخص کردن Bomb ها در بازی MinSweeper تولید میکردم که هرگز تکراری نباشن چون نمیشه یک خونه دوبار توش Bomb باشه و اونموقع دیگه تعداد خونه های bomb ما 10 نیست 9 یا حتی ممکن بود کمتر باشه ،اما روش کار به چه صورت بود!؟
    یک آرایه داریم به اسم bomb ، یک متغیر داریم به اسم p که تعداد اعداد تصادفی است که باید تولید بشه که اینجا 10 تاست ، یک حلقه While داریم که تا زمانی که p از 0 بزرگتر در حال انجام هست ، هر بار 1 عدد تولید میشه بعد این عدد رو تو آرایه با یک حلقه For جستجو میکنیم اگه باهاش مساوی بود پس باید یک عدد دیگه تولید بشه در اینصورت یک مقدار از P کم میشه و این مقدار در آرایه ذخیره میشه ...
    اگه سوالی بود در خدمتم...

  13. #13
    کاربر دائمی آواتار mr-adler
    تاریخ عضویت
    شهریور 1390
    محل زندگی
    همدان
    پست
    385

    نقل قول: توليد عدد تصادفي بين 1 تا 2000

    با سلام
    فقط شرمنده یه سوال
    Randomize Timer

    یعنی چی؟

  14. #14
    کاربر دائمی آواتار butterfly8528
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    CLR
    پست
    896

    نقل قول: توليد عدد تصادفي بين 1 تا 2000

    سلام دوست عزیز .
    با اجازه ms2222 عزیز بنده جواب میدم .
    نوشتن تابع Randomize قبل از تابع RND باعث میشه که اعداد راندوم بدست اومده در هر بار اجرای کد یکسان نباشند .
    اگر از این کد استفاده نکنید ، نتیجه اجرای کد شما همیشه به صورت یکسان خواهد بود :
    1و4و8و10و13و100و95و1230و....
    تابع Timer هم مدت زمان بالا اومدن ویندوز رو بر حسب میلی ثانیه بر میگردونه که نوشتن و یا ننوشتن این تابع بعد از Randomize تفاوتی نداره .
    موفق باشید .

  15. #15
    کاربر دائمی آواتار mr-adler
    تاریخ عضویت
    شهریور 1390
    محل زندگی
    همدان
    پست
    385

    نقل قول: توليد عدد تصادفي بين 1 تا 2000

    مچکرم . خیلی ممنون
    یک مقداریش رو متوجه شدم . اما یکمیش مونده . ممنون میشم جواب بدید تا یاد بگیرم
    نوشتن تابع Randomize قبل از تابع RND باعث میشه که اعداد راندوم بدست اومده در هر بار اجرای کد یکسان نباشند .
    Randomize
    a = Int(Rnd * 10)
    Text1.Text = a

    پس چرا کد بالا باز هم اعداد یکسان تولید میکنه؟

  16. #16
    کاربر دائمی آواتار butterfly8528
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    CLR
    پست
    896

    نقل قول: توليد عدد تصادفي بين 1 تا 2000

    سلام .
    اعداد تولید شده یکسان نیست !
    شما این کد هایی کد قرار دادید رو داخل یک Button بریزید و چند بار بر روی Button کلیک کنید و اعداد تولید شده رو به خاطر بسپارید ، سپس برنامه رو ببندید و دوباره اجرا کنید و مجددا چند بار بر روی Button کلیک کنید تا متوجه بشید که اعدادی که تولید می شوند از روال قبلی پیروی نمی کنند !
    موفق باشید .

  17. #17
    کاربر دائمی آواتار MMR_1344
    تاریخ عضویت
    آذر 1384
    محل زندگی
    تهران
    پست
    630

    نقل قول: توليد عدد تصادفي بين 1 تا 2000

    دوست عزیز
    اگر درست نوشته باشی اعداد بصورت تصادفی ایجاد خواهند شد

  18. #18
    کاربر دائمی آواتار mr-adler
    تاریخ عضویت
    شهریور 1390
    محل زندگی
    همدان
    پست
    385

    نقل قول: توليد عدد تصادفي بين 1 تا 2000

    بسیار ممنونم
    اقای butterfly8528 حالا منظورتون رو کامل متوجه شدم. دست همگی درد نکنه

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •