مولد عدد تصادفی
گزینهها
خروجی
جزئیات فنی
مولد عدد تصادفی چگونه کار میکند
این ابزار چه کاری انجام میدهد
مولد عدد تصادفی با استفاده از Web Crypto API (crypto.getRandomValues) اعداد صحیح یا اعشاریِ تصادفیِ قوی از نظر رمزنگاری تولید میکند. برای حذف سوگیریِ مدولو از نمونهگیریِ ردّی استفاده میکند تا توزیع یکنواخت در هر بازه مشخص تضمین شود. میتوانید مقادیر تکی یا دستهای از اعداد تصادفی را با تنظیمات قابل پیکربندیِ حداقل، حداکثر و دقت تولید کنید.
موارد استفادهٔ رایج برای توسعهدهندگان
توسعهدهندگان از مولدهای عدد تصادفیِ رمزنگاری برای کارهای حساس به امنیت مانند تولید توکنهای نشستِ غیرقابل حدس، نانسها، انتخابهای قرعهکشی یا نمونهگیری تصادفی از مجموعهدادهها استفاده میکنند. توسعهدهندگان بازی وقتی انصاف مهم است از آن برای تاسریزی و تولید رویهای استفاده میکنند. مهندسان QA ورودیهای تصادفیِ تست را برای فاز تست تولید میکنند و دانشمندان داده وقتی بازتولیدپذیری لازم نیست از آن برای نمونهگیری تصادفی استفاده میکنند.
قالبها، نوعها یا گونههای داده
این ابزار تولید عدد صحیح در یک بازه دلخواه (با کرانهای شامل) و تولید عدد اعشاری با دقت اعشاری قابل تنظیم را پشتیبانی میکند. نمونهگیریِ ردّی مقادیری را که وقتی بازه بهطور یکنواخت فضای خروجی منبع تصادفی را تقسیم نمیکند باعث سوگیریِ مدولو میشوند کنار میگذارد. آنتروپی زیربنایی از CSPRNG سیستمعامل (CryptGenRandom در ویندوز، /dev/urandom در یونیکس) تأمین میشود که از طریق Web Crypto API مرورگر در دسترس قرار میگیرد.
دامهای رایج و حالتهای لبهای
تصادفیبودنِ رمزنگاری از Math.random() کندتر است و برای کاربردهای غیرامنیتی مانند بر زدن یک پلیلیست ضروری نیست. نمونهگیریِ ردّی از نظر تئوری میتواند برای بازههای پاتولوژیک بارها حلقه بزند، هرچند در عمل ناچیز است. اعداد تصادفی تولیدشده در مرورگر قابل سیدگذاری برای بازتولیدپذیری نیستند — اگر برای تست به دنبالههای قطعی نیاز دارید، بهجای آن از یک PRNG سیددار استفاده کنید. بیشینه بازه امنِ اعداد صحیح با Number.MAX_SAFE_INTEGER جاوااسکریپت (2^53 - 1) محدود میشود.
چه زمانی از این ابزار استفاده کنیم در برابر کُد
وقتی به یک عدد تصادفیِ سریع و بدون سوگیری برای یک تصمیم یکباره، تست دستی یا بررسی اینکه پیادهسازی خودتان مقادیر را در بازههای مورد انتظار تولید میکند نیاز دارید، از این ابزار مرورگری استفاده کنید. برای استفاده در محیط عملیاتی، در کد خود مستقیماً crypto.getRandomValues() را فراخوانی کنید یا از توابع CSPRNG بومیِ زبان (ماژول secrets در Python، SecureRandom در Java) استفاده کنید که با مدیریت خطا و لاگگیری برنامه شما یکپارچه میشوند.