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

JavidFlasher

کاربر فعال
سلام يه كد واسه اينكار نوشته بودم گفتم كلاسش كنم اينجا هم بزارم!هر چند هادي جان تقريبا چنين كلاسي رو نوشته بودن!خودتون ببخشيد اگه مشكلي داشت
اول از همه از كلاس نمونه ميگيريم:
PHP:
var jj:rnd_without_repeat=new rnd_without_repeat()

با اين متد بازه خودمون رو تعيين ميكنيم كه اعداد تو چه بازه اي باشن:
PHP:
jj.RandomNumber(1,10)
كه اينجا اعداد بين 1تا 10 نوشتيم!توجه كنين خود ده شاملش نميشه!

بعد اين متد هست كه مقدار عدد تصادفيمون رو بر ميگردونه ازتو بازه انتخاب شده!
PHP:
jj.Start()

به طور كلي يه مثال ميزنم كه راحت متوجه بشين:
PHP:
var jj:rnd_without_repeat=new rnd_without_repeat();
var a:Number;
jj.RandomNumber(1,10);
setInterval(test,500);
function test():void
{
	a = jj.Start();
	trace(a);
}

فابل پيوست شده:
كلاس+سورس مثال
 

پیوست ها

  • rnd_without_repeat.zip
    6.7 کیلوبایت · بازدیدها: 120

mohsensemsarpour

کاربر فعال
بنام حق ...

سلام جاوید جان ، کلاس جالبی درست کردی ، فقط می خواستم یه چیزی بگم در مورد اضافه کردن یه مورد دیگه به کلاسی که نوشتی ، اونم اینکه ، یه دونه پارامتر دیگه به فانکشن رندوم اضافه می کردی و اونم تعداد عدد بود ، به عنوان مثال من می خوام 20 تا عدد داشته باشم بین یک تا صد در آن واحد به من این اعداد رو بده و تکراری هم نباشه ، فکر می کنم خیلی کار راه بنداز باشه

موفق و پیروز باشی
 

JavidFlasher

کاربر فعال
خب این کار نیازی به اضافه کردن متد نداره!
شما مثلا 20 بار متدStart()رو فرا خوانی کنی بهت میده این 20 عدد رو!
در واقع من اینو واسه پیمایش رندوم فریم نوشته بودم!
 
یه سوال نیمه مهندسی دارم
این فایلی که گذاشتین برای دانلود چه فرمتیه چه جوری باز میشه؟
 

JavidFlasher

کاربر فعال
سلام.فايل خاصي نيست يک فايل سورس مثال هستش يکي هم که کلاس هستش!منظورتون رو درست نفهميدم!
 
د خوب پسوندش چیه؟
fla که نیست
as که نیست
پس چیه؟
با چه نرم افزاری باز میشه؟
با فلش cs5 که باز نشد
 

++Hadi++

Active Member
آفرین جاوید عزیز
گل کاشتی عالی بود
فقط عدد کران بالایی تو بازه ارقام غیر تکراری قرار نمی گیره که با 1 درجه اضافه شدن به کران بالای بازه در درون ساختار کلاسی ، همه چی درست می شه .
عزیزم موفق باشی ...
 

mohsensemsarpour

کاربر فعال
خب این کار نیازی به اضافه کردن متد نداره!
شما مثلا 20 بار متدstart()رو فرا خوانی کنی بهت میده این 20 عدد رو!
در واقع من اینو واسه پیمایش رندوم فریم نوشته بودم!

بنام حق !

ممنون متوجه شدم فقط یه مورد که بنده گفتم این بود که اگر پارامتر اضافه بشه بهتر خواهد بود (نظر شخصی بود)

موفق باشید
 

JavidFlasher

کاربر فعال
آفرین جاوید عزیز
گل کاشتی عالی بود
فقط عدد کران بالایی تو بازه ارقام غیر تکراری قرار نمی گیره که با 1 درجه اضافه شدن به کران بالای بازه در درون ساختار کلاسی ، همه چی درست می شه .
عزیزم موفق باشی ...

آره راست میگین اما به نظرم مهم نیومد! کاملش میکنم ایشالله!
 
سلام
منم یه کد برا اعداد تصادفی بین دو بازه دلخواه نوشتم

PHP:
var arr:Array=[];

var cunter:Number;
var index:Number;

var upcunt:Number=100;
var lowcunt:Number=0


while (arr.length < upcunt-lowcunt) {
    
    
cunter=Math.floor(Math.random()*upcunt)
index=arr.indexOf(cunter);


if((index==-1)&&(cunter>=lowcunt))
{
    arr.push(cunter);
     
}


}
trace(arr);
 
اینم یه شمارنده خیلی سریع اعداد تصادفی بین دو بازه که البته اگر عدد کران بالا زیاد بزرگ باشه باید چند مرتبه اونو اجرا کرد تا اعداد تصادفی بیشتر مخلوط بشن.

PHP:
var arr1:Array=[];
var arr:Array=[];
var cunter:Number;
var index:Number;

var upcunt:Number=100;
var lowcunt:Number=10



for(lowcunt;lowcunt<=upcunt;lowcunt++)
{
    arr1.push(lowcunt);
}
//trace(arr1);
while (arr1.length >0)
{
    
    cunter=Math.floor(Math.random()*arr1.length)
    //cunter=Math.floor(Math.random()*arr1.length)
    index=arr1.indexOf(cunter);
    trace(cunter);
    arr.push(arr1.splice(index,1));
    
}
trace(arr);
 

JavidFlasher

کاربر فعال
سلام، اوه پست مال 4 سال پیش رو بالا اوردی!

یه راه ساده تر هم هست که رم کمتری میگیره و زمان initialize ش به قولی کمتره اونم اینه :

[JSS]
var o:Object={};
var n:Number=10;
var c:Number;
for(var i:int=0;i<n;i++){
var t:int=0;
c=Math.floor(Math.random()*n);
while(o[c]!=null){
t++;
c=Math.floor(Math.random()*n);
}
o[c]=true;
trace(t,c);
}
[/JSS]


ولی اگه شانست بد باشه و اعداد تصادفی یکسان پشت سر هم تولید کنه ممکنه مرتبه زمانیش خیلی بالا بره. ولی معمولا" این اتفاق نمیوفته تو خروجی می تونی چک کنی برای دست یابی به یه عدد چند بار while چرخیده.
 
آخرین ویرایش:
با تشکر
شمارنده خیلی سریعیه وram کمی رو هم اشغال میکنه.
اقا جاوید امیدوارم تو جاهای دیگه هم کمکم کنین.
یه سوال داشتم. ایا یه پکیج کلاسیک برای شمارش اعداد تصادفی وجود داره؟
که مثلا برنامه نویسای حرفه ای از اون استفاده بکنن یا هرکس بنا بر سلیقه خودش یه کلاس مینویسه؟
 

JavidFlasher

کاربر فعال
من ندیدم تو خود فلش چنین چیزی اما کلاس ها کتابخونه های کمکی باید زیاد باشه، آقا هادی هم یادمه یه نسخه کامل نوشته بودن واسه همین کار
 

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

بالا