View Full Version : ساخت اعداد random
sedamorde
چهارشنبه 17 شهریور 1389, 00:57 صبح
سلام دوستان،
من به 20 عدد random نیاز دارم که حتما به به صورت تصادفی 5 تا از آنها 0 باشه. به نظر شما بهترین راه حل برای این کار چیه!؟
مرسی :)
sama01
چهارشنبه 17 شهریور 1389, 02:27 صبح
جسارتا شما مفهوم عدد تصادفی را میدانید؟
البته شاید منظورتان را بد بیان کردهاید. چون این جملهی شما منطقا نادرست است.
میتوان 20 عدد داشت که 5تای آنها 0 و مابقی تصادفی باشند. جای این 5تا صفر میتواند تصادفی باشد.
ولی نمیتوان 20 عدد تصادقی درست کرد که الزاما و تصادفا 5تای آنها صفر باشد.
sedamorde
چهارشنبه 17 شهریور 1389, 03:34 صبح
جسارتا شما مفهوم عدد تصادفی را میدانید؟
البته شاید منظورتان را بد بیان کردهاید. چون این جملهی شما منطقا نادرست است.
میتوان 20 عدد داشت که 5تای آنها 0 و مابقی تصادفی باشند. جای این 5تا صفر میتواند تصادفی باشد.
ولی نمیتوان 20 عدد تصادقی درست کرد که الزاما و تصادفا 5تای آنها صفر باشد.
دوست عزیز اول از همه مرسی از پاسخت :)
من یک کارت دارم که 20 تا خونه داره، از این 20 تا باید 15 تا داری یک عدد تصادفی باشه و 5 تای دیگه 0. نباید هم این 5 تا خونه خالی پشت سر هم قرار بگیره و هر بار باید جاش عوض بشه (فکر کنم این توضح بهتر شد)
sama01
چهارشنبه 17 شهریور 1389, 04:32 صبح
خیلی خوب.
من این کار رو میکنم:
1. تولید اعداد
یک آرایه موقت ($tempArray) درست میکنم که 5 درایهی اول آن صفر هستند.
سپس در یک حلقهی for، سایر درایهها را برابر با یک مقدار تصادفی قرار میدهم. (محدودهی این اعداد تصادفی باید در اینجا مشخص شود)
2. در هم ریختن
آرایهی نهایی ($finalArray) را میسازم.
سپس وارد یک حلقه میشویم و یک درایه را به طور تصادفی از آرایهی موقت خوانده و بعد از درج در آرایهی نهایی، آن درایه را از آرایهی موقت حذف میکنیم.
در پایان کار، آرایهی موقت خالی شده و درایههای آن به طور تصادفی در آرایهی نهایی قرار گرفتهاند.
کد:
$tempArray = array(0,0,0,0,0);
for ($i=5; $i<15; $i++) $tempArray[] = rand();
$finalArray = array();
for ($i=0;$i<15;$i++){
$randomIndex = array_rand($tempArray);
$finalArray[] = $tempArray[$randomIndex];
unset($tempArray[$randomIndex]);
}
نمونهی خروجی کد:
$tempArray:
Array
(
[0] => 0
[1] => 0
[2] => 0
[3] => 0
[4] => 0
[5] => 25309
[6] => 7762
[7] => 5411
[8] => 23072
[9] => 20441
[10] => 19870
[11] => 24703
[12] => 30796
[13] => 4245
[14] => 9642
)
$finalArray:
Array
(
[0] => 0
[1] => 25309
[2] => 0
[3] => 7762
[4] => 0
[5] => 19870
[6] => 24703
[7] => 0
[8] => 9642
[9] => 20441
[10] => 23072
[11] => 30796
[12] => 0
[13] => 5411
[14] => 4245
)
sedamorde
چهارشنبه 17 شهریور 1389, 11:54 صبح
دوست عزیز واقعا ممنون. خیلی راه خوبی یاد دادی.
مرسی :)
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.