نولید دو عدد تصادفی و عملیات ریاضی بین آنها

نولید دو عدد تصادفی و سوال در مورد کدهای random

سلام دوستان
من با استفاده از دستورات زیر دو تا عدد کمتر از 10 تولید می کنم حال میخوام عدد اول بزرگتر از عدد دومی تولید بشه که بتوان اونا رو تفریق کرد. ممنون میشم راهنمایی کنید.
[PHPS]var ali:int = Math.floor(Math.random() * 10);
mytext1.text = ali.toString();

var reza:int = Math.floor(Math.random() * 10);
mytext2.text = reza.toString();[/PHPS]

و سوال دوم اینکه می خواستم فرق این سه تا رو بدونم:
[PHPS]var ali:int = Math.round(Math.random() * 10);
var ali:int = Math.floor(Math.random() * 10);
var ali:int = Math.random() * 10;[/PHPS]
 
آخرین ویرایش:

mmz2006

Active Member
با سلام

شما می تونید از چند راه استفاده کنید ساده ترش اینه که عدد اول رو از 5 تا 10 رندم بگیرید و عدد دوم رو از 0 تا 5 به شکل زیر:
PHP:
var ali:int =( Math.floor(Math.random() * 5)) + 5 ;
mytext1.text = ali.toString();
 
var reza:int = Math.floor(Math.random() * 5);
mytext2.text = reza.toString();

راه درست تر اینه که از حلقه while استفاده کنید:
PHP:
var ali:int = (Math.floor(Math.random() * 9 )) + 1  ;
//بخاطر اینکه این عدد صفر نباشد به این شکل ضرب در 9 کردیم و بعد بعلاوه یک

var reza:int = Math.floor(Math.random() * 10);


while (reza>=ali){
    reza = Math.floor(Math.random() * 10);
   }
	//این حلقه می گوید تا وقتیکه متغیردوم بزرگتر یا مساوی با متغیراول است ، رندم گیری را  ادامه بده 
	
mytext1.text = ali.toString();	

mytext2.text = reza.toString();

اینم از معنای این سه خط:

PHP:
var ali:int = Math.round(Math.random() * 10);
//عدد اعشاری رااگر بیشتر از پنچ دهم باشد به سمت بالا گرد می کند و اگر کمتر باشد به سمت پایین 
//مثلا 2.24 میشود 2

var ali:int = Math.floor(Math.random() * 10);
//عدد اعشاری را به سمت پایین گرد می کند مثلا 0.8745 می شود 0

var ali:int = Math.random() * 10;
//یک عدد رندم از صفر تا یک به صورت اعشاری می دهد بعد آنرا ضرب در 10 می کند
 
آخرین ویرایش:
ممنون بابت پاسخ تان بی نقص بود.
من فقط تو یه جایی موندم که نمیدونم مسئله رو هضمش کنم البته مشکل خاصی نیست فقط میخواستم علتشو بدونم.
جایی که نوشتیم:
[PHPS]var reza:int = Math.floor(Math.random() * 10);
while (reza>=ali)
{
reza = Math.floor(Math.random() * 10);
}
//این حلقه می گوید تا وقتیکه متغیردوم بزرگتر یا مساوی با متغیراول است ، رندم گیری را ادامه بده

[/PHPS]
با اینکه تعیین کردیم که متغیر رضا بزرگتر مساوی متغیر علی باشد ولی چرا موقع خروجی تو کادر مربوط به رضا عدد کوچکتری نسبت به علی تولید میشه؟
یعنی رضا که متغیر دومه و باید از متغیر اولی کوچکتر باشه ولی تعیین کردیم باید بزرگتر مساوی باشه.
در حالت کلی چرا عدد مربوط به متغیر رضا کوچکتر از متغیر علی تولید میشه؟
 

mmz2006

Active Member
با سلام دوست عزیز

فکر کنم حلقه ویل رو درست معنی نکردم یا اینکه عملکرد ایف شما رو در اینجا به اشتباه انداخته

عملکرد این کد رو باز توضیح می دم امیدوارم بتونم برسونم:

ما ابتدا برای متغیر علی یه رندم می گیریم حاصلش می تونه از یک تا ده باشه

بعد برای متغیر رضا هم رندم می گیرم حاصلش می تونه از صفر تا ده باشه

در اینجا حلقه میاد و اعتبار سنجی می کنه :
در قسمت اول داخل پرانتز شرط می کنه که اگر متغیر رضا که الان رندم گیری شده ، بزرگتر یا مساوی با متغیر علی باشد این حلقه باز باید تکرار شود تا زمانیکه دیگر این شرط محقق نشود
تا وقتیکه متغیر رضا بزرگتر باشد قسمت آکولاد یعنی قسمت عملکرد حلقه اجرا می شود
و برای ما دوباره متغیر رضا را رندم گیری می کند

این کار حلقه تا زمانیکه شرط منتفی شود ادامه دارد و ممکن است دهها بار این رندم گیری تکرار شود و بخاطر سرعت عملکرد سیستم ما متوجه این دفعات نمی شویم.
 
ممنون دوست عزیز
البته من درک درستی از while نداشتم که با توضیحاتتون مفهوم while رو بخوبی فهمیدم.
بازم متشکر از توضیحات خوبتون
 

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

بالا