random‌در دلفي

sara_she

Member
سلام

مي خوام تو دلفي به ازاي هر كاربري كه وارد نرم افزار حسابداري مي شه يك عدد تصادفي براي اين كاربر تو بانك ثبت بشه

توليد عدد تصادفي تو دلفي با چه تابعي انجام مي شه و مقدار برگشتي از اين تابع از چه نوعي هست؟
 

shirini_forush

Well-Known Member
با تابع Random
Random تودلفی خیلی جالبه. چون رنج ورودیش و خروجیش میتونه هرچیزی باشه:
کنترل
اینت
دابل
رنگ
کاراکتر
و...
فقط از Randomize استفاده کنید قبلش و حتما یادتون باشه فقط یه بار استفاده بشه.
 

sara_she

Member
مي شه يه نمونه كد برام بذارين . و بگين با چه سينتكسي range‌ عددي رو تعيين مي كنيد؟
 

DrXoX

Active Member
سلام
با اجازه safir 187
بازم با یک مثال ساده این کد رو براتون توضیح میدم مرحله به مرحله:
1-یک باتن و یک لیبل روی فرم قرار بدین
2- در onclick باتن کدهای زیر رو بنویسید

procedure TForm1.Button1Click(Sender: TObject);
var
x:integer;
begin
Randomize;
x:=RandomRange(1,100);
label1.Caption:=inttostr(x);
end;

2-برنامه رو اجرا و روی باتن 1 چند بار کلیک کنید می بینید که هر بار یک عدد تصادفی تولید میشه
3-برای کار شما، می تونید کد ها را در Onshow فرم بنویسید که هر بار فرم باز شد یک کد تصادفی تولید بشه
4-تمام
__________________

روزي کـه تو آمــــدي به دنيا عــريان *** جمعي به تو خندان و تو بودي گريان
کاري بکن اي دوست که وقت رفتن *** جمعي به تو گريند و تو باشي خندان
 

shirini_forush

Well-Known Member
DrXoX جان ممنون ولی یه مشکلی هست. این که Randomize چند بار اجرا میشه یعنی با هر با کیلک روی دکمه.
باید اون بیاد تو ایونت شروع برنامه که فقط و فقط یه بار اجرا بشه:
کد:
procedure TForm1Initialize(Sender:TObject);
begin
   Randomize;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
   x:integer;
begin
   x:=RandomRange(1,100);
   label1.Caption:=inttostr(x);
end;
 

sara_she

Member
سلام
از راهنمايي هي شما ممنونم

مي شه بگين چرا randomize بايد يكبار اجرا بشه؟ و ديگه اينكه اگه در روال FormCreate قرار بگيره درسته و يكبار اجرا مي شه؟

من به جاي تعيين range كد رو به صورت زير نوشتم:
کد:
random(maxint);
 

MnavidM

Active Member
سلام
از راهنمايي هي شما ممنونم

مي شه بگين چرا randomize بايد يكبار اجرا بشه؟ و ديگه اينكه اگه در روال FormCreate قرار بگيره درسته و يكبار اجرا مي شه؟

من به جاي تعيين range كد رو به صورت زير نوشتم:
کد:
random(maxint);
منظور از اینکه حداقل باید یک بار اجرا بشه.

این دستور به تابع random می فهمونه که عدد تصادقی مختلف ایجاد کنه.
 

sara_she

Member
سلام
از راهنمايي شما ممنونم
من دكمه تشكر انتهاي پست ها نمي بينم
 

shirini_forush

Well-Known Member
منظور از اینکه حداقل باید یک بار اجرا بشه.
نه نوید جان
اگر بیشتر از یک بار بشه اعداد رندم مشکلاتی دارن.
میتونید تست کنید و نتیجه رو ببینید.
هم تو .net هم تو delphi هم زبونای دیگه ای که الگوریتم های مشابه دارن.
 

MnavidM

Active Member
نه نوید جان
اگر بیشتر از یک بار بشه اعداد رندم مشکلاتی دارن.
میتونید تست کنید و نتیجه رو ببینید.
هم تو .net هم تو delphi هم زبونای دیگه ای که الگوریتم های مشابه دارن.
والا برای من که مشکلی ایجاد نکرده.

گشتم مطلبی هم در این مورد ندیدم .

خوشحال می شم ، اگه مطلبی در این مورد سراغ دارید ، اینجا هم بزارید.

نوید.
 

جدیدترین ارسال ها

بالا