پس از هفتهها انتظار، شما و دوستانتان برای نخستین بازی Dungeons & Dragons (D&D) گرد هم میآیید. چون این اولین جلسهی بازی است، هر بازیکن باید شخصیتی بسازد که با آن بازی کند. تواناییهای شخصیت با ریختن تاسهای ششوجهی مشخص میشود، اما تاسها کجا هستند؟ با بهت متوجه میشوید که دوستانتان منتظرند شما تاسها را تهیه کنید؛ بالاخره شما بودید که ایدهی بازی D&D را دادید! با دستپاچگی متوجه میشوید که آوردن تاسها را فراموش کردهاید و این یعنی دیگر بازی D&D در کار نیست. چون مهارتهای پایهی برنامهنویسی دارید، سریع راهحلی پیدا میکنید: برنامهای مینویسید که ریختن تاس را شبیهسازی کند.
برای یک بازی Dungeons & Dragons، هر بازیکن با ساختن شخصیتی که بتواند با آن بازی کند کار خود را شروع میکند. این شخصیت، در کنار موارد دیگر، شش ویژگی دارد: قدرت، چابکی، استقامت، هوش، خرد و جذابیت. امتیاز این شش ویژگی بهصورت تصادفی تعیین میشود. این کار را با ریختن چهار تاس ششوجهی و ثبت مجموع سه تاس بزرگتر انجام میدهید. این کار را شش بار انجام میدهید، یک بار برای هر ویژگی.
امتیاز جان اولیهی شخصیت شما برابر است با ۱۰ + تعدیلکنندهی استقامت شخصیت شما. تعدیلکنندهی استقامت شخصیتتان را با کم کردن ۱۰ از استقامت او، تقسیم نتیجه بر ۲ و گرد کردن آن به پایین به دست میآورید.
یک تولیدکنندهی شخصیت تصادفی بنویسید که قواعد بالا را رعایت کند.
برای مثال، شش پرتاب چهار تاس میتواند چنین باشد:
چون استقامت ۳ است، تعدیلکنندهی استقامت منفی ۴ و امتیاز جان ۶ است.
بیشتر زبانهای برنامهنویسی تولیدکنندههای (شبه)تصادفی دارند، اما کمتر زبان برنامهنویسیای برای ریختن تاس طراحی شده است. یکی از این زبانها Troll است.
در Exercism ثبتنام کنید تا Elixir را همراه با 58 مفهوم168 تمرین و مربیگری انسانی واقعی یاد بگیرید و در آن استاد شوید، همهی اینها رایگان.
بررسی میکنیم که چگونه تاسهای (بهظاهر) تصادفی تولید کنیم. با دانهها، اعداد شبهتصادفی و چند دام رایج آشنا میشوید. در پایان میبینیم که تست مبتنی بر ویژگی برای تست توابعی که مقادیر تصادفی برمیگردانند چقدر عالی است.