۳ علی الحبیبی
کار با shuffle
جامعه پی اچ پی ایجاد شده در ۰۵ خرداد ۱۴۰۱

سلام

برنامه ای داریم که قراره بین تعدادی کاربر قرعه کشی انجام بده. 4 کاربر داریم و 8 جایزه مختلف. برای اینکار هر دوآرایه مربوط به کاربر‌ها و جوایز را shuffle می‌کنیم:

$users = array('amin','mohsen','mohamad','mahdi');
 $gift = array('100','200','1000','300','400','500','600','700');
shuffle($users);
shuffle($gift);
 echo $users[0].' won '. $gift[0].' dollars! 
'
;  echo $users[1].' won '. $gift[1].' dollars!
'
;  echo $users[2].' won '. $gift[2].' dollars!
'
;  echo $users[3].' won '. $gift[3].' dollars!';

یک نمونه

amin won 200 dollars!
mohamad won 300 dollars!
mahdi won 1000 dollars!
mohsen won 400 dollars!

حالا سوال اینجاست که به غیر از تابع shuffle چه راه دیگری برای اینکار هست؟ آیا اصلا این روش بهینه و درستی هست یا خیر؟

سلام وقت بخیر

روش دیگه هم این هست که اول شما طول اعضای ارایه رو دریافت کنید

بعد مطابق اون عدد رندوم تولید کنید و آرایه با اون اندیس رو چاپ کنید.

کیان سلگی ۰۵ خرداد ۱۴۰۱، ۱۹:۵۹

خب در اینصورت چطور مطمئن بشیم که تابع rand عدد تکراری نمیده؟

$users = array('amin','mohsen','mohamad','mahdi');
 $gift = array('100','200','1000','300','400','500','600','700');
foreach ($users as $value) {
    $a = rand(0,3);
    $b = rand(0,7);
    echo $users[$a].' won '. $gift[$b].' dollars! 
'
; }

output:

amin won 600 dollars!
amin won 1000 dollars!
mohamad won 1000 dollars!
mohsen won 600 dollars!
علی الحبیبی ۰۵ خرداد ۱۴۰۱، ۲۰:۱۸

سلام دوست عزیز

یکی از بحث‌های جدی علوم کامپیوتر سر ایجاد عدد رندوم حقیقی است که چالش‌های خودش رو داره

برای حل مسئله شما بهتره از همون shuffle استفاده کنید که رندوم حقیقی در آرایتون داشته باشید

موفق باشید ?

محمد گازری ۰۶ خرداد ۱۴۰۱، ۰۷:۳۲