تابع choose در زبان GML، جزو توابع مربوط به اعداد حقیقی است. درست است که کار کلی این تابع مربوط به اعداد حقیقی نیست، اما خوب ما منبعمان سایت اصلی GameMaker: Studio است و آن را مربوط به Real Number می دانیم.

گاهی ممکن است بخواهید در بازیتان مقداری را تصادفی انتخاب کنید. برای این کار می توانید از توابعی نظیر random و irandom استفاده کنید. اما مشکل این توابع این است که ورودیشان فقط می تواند مقدار عددی باشد. یعنی نمی تواند یک مقدار رشته ای مانند "Name" باشد.

برای این کار شما می توانید از دستورات شرطی مانند switch و توابعی نظیر random در آن استفاده کنید، ولی کارتان سخت می شود.

در این حالت تابعی به کمک ما می آید که با آن می توانید هر مقداری را به طور تصادفی انتخاب کنید.

کار با این تابع اینگونه است:

choose(val0, val1, val2, ..., val15);
choose(مقدار15 ,... ,مقدار2, مقدار1, مقدار0);

همان طور که مشاهده می کنید، این تابع محدودیتی دارد. در ورودی این تابع بیشتر از 16 مقدار نمی توانید وارد کنید. برای مثال اگر ما بخواهیم یک نام را به طور تصادفی انتخاب کنیم، این تابع کمک زیادی به ما می کند.

Name=choose("Ali", "Reza", "Hosein", "Majid", "Mohammad", "Hasan", "Mohsen");
show_message("Hello. My name is "+ Name);

این تابع کاربرد های زیادی دارد. برای مثال می توان با آن یک صدا را به طور تصادفی پخش کرد.

audio_play_sound(choose(snd_Explosion01, snd_Explosion02, snd_Explosion03, snd_Explosion04));

در مثال بالا به صورت تصادفی یکی از صدا های Explosion01 یا Explosion02 یا Explosion03 یا Explosion04 پخش می شود.

توجه کنید که در Game maker: Studio این تابع مقداری تصادفی انتخاب می کند، ولی این مقدار در هر بار اجرا بازی یکسان است. برای اینکه انتخاب در هر بار اجرای بازی متفاوت باشد باشد باید از تابع randomize استفاده کنید.