GoGPT Best VPN GoSearch

فاویکون OnWorks

dieharder - آنلاین در ابر

Dieharder را در ارائه دهنده هاست رایگان OnWorks از طریق Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا کنید.

این دستور dieharder است که می تواند در ارائه دهنده هاست رایگان OnWorks با استفاده از یکی از چندین ایستگاه کاری آنلاین رایگان ما مانند Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا شود.

برنامه:

نام


سخت تر - A تست و معیار ابزار برای تصادفی عدد ژنراتورها

خلاصه


dieharder [-a] [-d شماره آزمایش dieharder] [-f نام فایل] [-B]
[-D output flag [-D output flag] ... ] [-F] [-c separator]
[-g عدد مولد یا -1] [-h] [-k ks_flag] [-l]
[-L همپوشانی] [-m multiply_p] [-n ntuple]
[-p تعداد p نمونه] [-P Xoff]
[-o نام فایل] [-s seed استراتژی] [-S دانه اعداد تصادفی]
[-n ntuple] [-p تعداد p نمونه] [-o نام فایل]
[-استراتژی بذر] [-S دانه اعداد تصادفی]
[-t تعداد نمونه های آزمایشی] [-v پرچم پرمخاطب]
[-W ضعیف] [-X شکست] [-Y Xtrategy]
[-x xvalue] [-y yvalue] [-z zvalue]

سخت تر OPTIONS


-a تمام تست ها را با گزینه های استاندارد/پیش فرض برای ایجاد a اجرا می کند
گزارش قابل کنترل توسط کاربر برای کنترل قالب بندی گزارش، -D را در زیر ببینید.
برای کنترل قدرت تست (که از مقادیر پیش فرض برای نمونه هایی استفاده می کند که
به طور کلی نمی توان آن را متنوع کرد و نمونه هایی که معمولاً می توانند) -m را در زیر به صورت a ببینند
"ضریب" از تعداد پیش فرض نمونه ها (فقط در اجرای -a استفاده می شود).

شماره تست -d - تست سخت سخت خاص را انتخاب می کند.

-f نام فایل - ژنراتورهای 201 یا 202 به دودویی خام یا باینری اجازه می‌دهند
اعداد اسکی فرمت شده برای خواندن از یک فایل برای آزمایش. ژنراتور 200 می خواند
در اعداد باینری خام از stdin. خوب توجه کنید: تست های زیادی با پارامترهای پیش فرض
نیاز به مقدار زیادی رند! برای دیدن نمونه ای از هدر (الزامی) برای ASCII
ورودی فرمت شده، اجرا کنید

dieharder -o -f example.input -t 10

و سپس محتویات example.input را بررسی کنید. ورودی باینری خام 32 بیت را می خواند
افزایش جریان داده مشخص شده stdin_input_raw یک لوله را از خام می پذیرد
جریان باینری

حالت باینری -B (که با -o در زیر استفاده می شود) باعث می شود که رندهای خروجی به صورت باینری خام نوشته شوند، نه
ascii فرمت شده

پرچم خروجی D - اجازه می دهد تا فیلدها برای گنجاندن در انتخاب شوند
خروجی سخت تر هر پرچم را می توان به عنوان یک عدد باینری وارد کرد که a را روشن می کند
فیلد یا هدر خروجی خاص یا با نام پرچم. پرچم ها جمع می شوند. برای دیدن همه
پرچم های شناخته شده فعلی از دستور -F استفاده می کنند.

-F - همه پرچم های شناخته شده را با نام و شماره فهرست می کند.

جداکننده جدول -c - جایی که جداکننده به عنوان مثال '،' (CSV) یا ' ' (فضای سفید) است.

-g شماره ژنراتور - یک ژنراتور خاص را برای آزمایش انتخاب می کند. استفاده كردن
-g -1 باعث می شود که تمام ژنراتورهای شناخته شده روی نمایشگر چاپ شوند.

-h راهنمای حساس به متن را چاپ می کند -- معمولاً Usage (این پیام) یا a
خلاصه آزمایش اگر به عنوان مثال dieharder -d 3 -h وارد شود.

-k ks_flag - ks_flag

0 سریع است اما برای نمونه های > 4999 (پیش فرض) کمی شلخته است.

1 برای تعداد بیشتری از نمونه ها بسیار کندتر است اما دقیق تر است.

2 هنوز هم کندتر است، اما (امیدواریم) برای هر تعداد دقیق ماشین آلات دقیق باشد
نمونه‌ها را تا حدی ناشناخته عددی بالا می‌برد (آزمایش شده است
حداقل صدها هزار).

3 kuiper ks است، سریع، برای نمونه های کوچک کاملاً نادرست است، منسوخ شده است.

- تمام تست های شناخته شده را لیست می کنم.

-L همپوشانی دارند

1 (استفاده از همپوشانی، پیش‌فرض)

0 (از همپوشانی استفاده نکنید)

در operm5 یا تست های دیگری که از حالت های نمونه همپوشانی و غیر همپوشانی پشتیبانی می کنند.

-m multiply_p - ضرب # پیش‌فرض psamples در -a(ll) runs to crank
تا حل و فصل شکست -n ntuple - تنظیم طول ntuple برای آزمایش بر روی بیت کوتاه
رشته هایی که اجازه می دهند طول تغییر کند (به عنوان مثال rgb bitdist).

-o نام فایل - خروجی -t شمارش اعداد تصادفی از ژنراتور فعلی به فایل.

-p count - تعداد نمونه‌های p-value را در هر آزمون تنظیم می‌کند (پیش‌فرض 100).

-P Xoff - تعداد نمونه هایی را که قبل از تصمیم گیری جمع می شوند را تنظیم می کند
که یک ژنراتور "خوب" است و واقعاً، واقعاً حتی یک -Y 2 T2D اجرا می کند. در حال حاضر
پیش فرض 100000 است. در نهایت از شکست تست T2D مشتق از AES تنظیم می شود
آستانه برای عملیات قابل اعتماد کاملاً خودکار است، اما در حال حاضر بیشتر است
آستانه "خستگی" تعیین می شود که چه مدت ممکن است معقولانه بخواهد در هر موردی صبر کند
اجرای آزمایشی

-S seed - که در آن دانه یک یونیت است. دانه تصادفی پیش‌فرض را لغو می‌کند
انتخاب. برای ورودی فایل یا stdin نادیده گرفته شد.

استراتژی -s - اگر استراتژی (پیش‌فرض) 0 باشد، دانه‌های سخت‌تر (یا
به عقب) یک بار در ابتدا که مولد اعداد تصادفی انتخاب شده است و
سپس دیگر هرگز اگر استراتژی غیرصفر باشد، مولد مجدداً بکار می‌رود یا مجدداً در آن بازگردانده می‌شود
شروع هر آزمون اگر -S seed مشخص شده باشد، یا از یک فایل استفاده شده باشد، این است
به این معنی است که هر آزمون بر روی همان دنباله اعمال می شود (که برای اعتبار سنجی مفید است
و تست dieharder، اما راه خوبی برای آزمایش rngs نیست). در غیر این صورت تصادفی جدید
بذر برای هر آزمایش انتخاب می شود.

-t count - تعداد موجودیت های تصادفی مورد استفاده در هر آزمون را تعیین می کند
ممکن است. هشدار داده می شود - برخی از آزمایش ها دارای اندازه های نمونه ثابت هستند. دیگران متغیر هستند اما
دارای حداقل اندازه های عملی پیشنهاد می شود با مقادیر استفاده شده در -a شروع کنید
و بر اساس آزمون به آزمایش به دقت آزمایش کنید.

-W ضعیف - آستانه "ضعیف" را تعیین می کند تا آزمون(های) کم یا زیاد شود
بخشش در طول اجرای آزمایش تا تخریب. پیش فرض در حال حاضر 0.005 است.

-X شکست - آستانه "شکست" را تعیین می کند تا آزمون(های) کم یا زیاد شود
بخشش در طول اجرای آزمایش تا تخریب. پیش فرض در حال حاضر 0.000001 است،
که در اصل "شکست قطعی فرضیه صفر"، حالت مورد نظر از
خرابی ژنراتور قابل تکرار

-Y Xtrategy - پرچم Xtrategy "تست شکست" جدید (T2F) را کنترل می کند.
حالت ها. این پرچم ها و حالت های آنها به شرح زیر عمل می کنند:

0 - فقط با تعداد مشخص شده نمونه ها و نمونه ها سخت تر اجرا کنید.
به صورت پویا یک اجرا را بر اساس نتایج تغییر دهید. این راهی است که همیشه اجرا شده است، و
پیش فرض است.

1 - حالت "رفع ابهام" (RA). اگر یک تست "ضعیف" را برگرداند، این یک است
نتیجه نامطلوب بالاخره این یعنی چی؟ اگر یک سری آزمایشی طولانی اجرا می کنید،
شما گهگاه بازده ضعیفی را برای یک ژنراتور کامل خواهید دید زیرا p است
به طور یکنواخت توزیع می شود و هر از گاهی در هر بازه محدودی ظاهر می شود.
حتی اگر یک اجرای آزمایشی بیش از یک نتیجه ضعیف را نشان دهد، نمی‌توانید مطمئن باشید
ژنراتور از کار می افتد حالت RA نمونه ها را (معمولاً در بلوک های 100 تایی) اضافه می کند تا
نتیجه آزمایش به طور کامل ضعیف نمی شود یا منجر به شکست واضح می شود. این
از نظر اخلاقی معادل اجرای چندین بار آزمون برای دیدن نتیجه ضعیف است یا خیر
قابل تکرار است، اما از آن زمان سوگیری قضاوت شخصی را در فرآیند حذف می کند
آستانه شکست پیش‌فرض بسیار کوچک است و احتمال رسیدن به آن بسیار کم است
شانس تصادفی حتی در بسیاری از اجراها.

این انتخاب باید فقط be استفاده با -k 2.

2 - حالت "تست تا نابودی". گاهی اوقات شما فقط می خواهید بدانید که کجا یا اگر یک
ژنراتور خواهد شد. -Y 2 باعث می شود که نمونه ها باشد
هر بار 100 اضافه می شود تا زمانی که یک تست مقدار کلی کمتر از شکست را برگرداند
آستانه یا حداکثر تعداد نمونه های مشخص شده (نگاه کنید به -P) رسیده است.

خوب توجه کنید! در این حالت یکی ممکن است به دلیل شکست متناوب فرضیه صفر --
خود آزمون آزمون بدی است و ناموفق است! با وجود بهترین آزمایشات ما، بسیاری از آزمایشات سخت تر
تلاش ها، از نظر عددی ناپایدار هستند یا فقط هدف تقریباً شناخته شده ای دارند
آمار یا مستقیماً نتایج مجانبی هستند و در نهایت به a برمی‌گردند
حتی برای یک ژنراتور استاندارد طلایی (مانند AES) یا برای
بسیار محتاط ژنراتور XOR با AES، سه ماهی، بوسه، همه به یکباره و
xor'd با هم. بنابراین استفاده از این حالت امن ترین است.
اجرای یک اجرای T2D در AES برای دریافت ایده از آستانه(های) شکست تست
(کاری که من در نهایت انجام خواهم داد و در وب منتشر خواهم کرد تا همه مجبور نباشند
آن را به طور مستقل انجام دهید) و سپس آن را روی مولد هدف خود اجرا کنید. شکست با
تعداد نمونه ها در مرتبه ای از آستانه های AES باید
احتمالاً خرابی های آزمایشی احتمالی در نظر گرفته می شود، نه خرابی ژنراتور. شکست ها در
سطوح به طور قابل توجهی کمتر از آستانه های شکست ژنراتور استاندارد طلایی شناخته شده است
البته احتمالاً خرابی ژنراتور است.

این انتخاب باید فقط be استفاده با -k 2.

پرچم پرمخاطب -v - پرزبانی خروجی را برای اشکال زدایی کنترل می کند
فقط. احتمالاً برای غیر توسعه دهندگان کاربرد کمی دارد و توسعه دهندگان می توانند آن را بخوانند
enum(های) در dieharder.h و منابع تست برای دیدن اینکه کدام مقادیر پرچم خروجی را روشن می کنند
در کدام روال 1 منجر به ردیابی بسیار دقیق از فعالیت برنامه می شود.

عدد -x,-y,-z - برخی از تست‌ها دارای پارامترهایی هستند که با خیال راحت می‌توان آنها را تغییر داد
از مقدار پیش فرض آنها به عنوان مثال، در آزمون تولدهای سرسخت، یکی می تواند متفاوت باشد
تعداد طول، که همچنین می تواند متفاوت باشد. -x 2048 -y 30 این دو را تغییر می دهد
مقادیر اما همچنان باید به خوبی اجرا شود. این پارامترها باید به صورت داخلی مستند شوند
(جایی که وجود دارند) در نت های قابل مشاهده به عنوان مثال -d 0 -h.

توجه داشته باشید خوب: ارزیابی (های) برای rngs ممکن است، در واقع، کاملا نادرست باشد یا
گمراه کننده هنوز "تست های بد" در dieharder وجود دارد، اگرچه ما در حال کار برای آن هستیم
آنها را اصلاح و بهبود بخشید (و سعی کنید آنها را در توضیحات تست قابل مشاهده مستند کنید
با -g شماره آزمایش -h). به ویژه، مقادیر «ضعیف» باید یک آزمایش در دو انجام شود
صد، و مقادیر "شکست خورده" باید یک تست در یک میلیون با پیش فرض انجام شود
آستانه - معنی p این است. از آنها در معرض خطر خود استفاده کنید! آگاه باش!

یا بهتر از آن، از -Y 1 و -Y 2 جدید برای رفع ابهام یا تست تخریب استفاده کنید
حالت‌های بالا، در مقایسه با اجراهای مشابه در یکی از حالت‌های هرچه بهتر
ژنراتورهای رمزنگاری، AES یا threefish.

شرح


سخت تر

به عکس فوری فعلی آزمایشگر اعداد تصادفی سخت تر خوش آمدید. کپسوله می کند
همه مولدهای اعداد تصادفی (rngs) کتابخانه علمی گنو (GSL) و همچنین a
تعداد ژنراتورها از کتابخانه آماری R، منابع سخت افزاری مانند
/ توسعه تمدن /* ژنراتورهای کیفیت رمزنگاری تصادفی "استاندارد طلایی" (مفید برای آزمایش
سخت تر و برای مقاصد مقایسه با ژنراتورهای جدید) و همچنین ژنراتورها
توسط کاربران ارائه شده یا در ادبیات موجود در الف تنها دهنه که می تواند آنها را زمان بندی کند
و آنها را تحت آزمایش های مختلف برای تصادفی قرار دهید. این تست ها به شکل های مختلفی استخراج می شوند
"باتری سخت تست های اعداد تصادفی" جورج مارسالیا، آزمون آماری NIST
مجموعه، و دوباره از منابع دیگر مانند اختراع شخصی، مشارکت کاربر، و غیره
مجموعه های آزمایشی (متن باز) یا ادبیات.

نکته اصلی dieharder آسان کردن زمان و آزمایش اعداد تصادفی (شبه) است
ژنراتورها، از جمله نرم افزار و سخت افزار rngs، با ابزار کاملاً متن باز. که در
علاوه بر ارائه دسترسی "فوری" به آزمایش تمام ژنراتورهای داخلی، کاربران می توانند
یکی از سه راه را برای آزمایش مولدهای اعداد تصادفی یا منابع خود انتخاب کنید: یونیکس
لوله یک جریان بیتی باینری خام (تصادفی فرضی)؛ یک فایل حاوی یک (تصادفی فرضی)
بیت‌استریم باینری خام یا فرمت‌شده ascii uints یا شناور. و ژنراتور خود را در آن جاسازی کنید
مهار rng سازگار با GSL Dieharder و افزودن آن به لیست ژنراتورهای داخلی.
روش‌های ورودی stdin و فایل در زیر در بخش خودشان توضیح داده شده‌اند، همانطور که پیشنهاد می‌شود
"بهترین تمرین" برای مبتدیان تست مولد اعداد تصادفی.

یک انگیزه مهم برای استفاده از dieharder این است که کل مجموعه آزمایشی کاملاً Gnu است
مجوز عمومی (GPL) کد منبع باز و از این رو به جای ممنوعیت "به دنبال
در زیر کاپوت" همه کاربران علناً تشویق می شوند تا سختگیر را به طور انتقادی بررسی کنند
برای خطاها کد کنید، آزمایش‌ها یا ژنراتورها یا رابط‌های کاربری جدید اضافه کنید، یا آزادانه از آن‌ها همانطور که هست استفاده کنید
Rng های نامزد مورد علاقه خود را فقط با محدودیت های GPL آزمایش می کنند. به عنوان یک
در نتیجه باز بودن آن، به معنای واقعی کلمه صدها پیشرفت و رفع اشکال انجام شده است
ارائه شده توسط کاربران تا به امروز، که منجر به یک مجموعه آزمایشی بسیار قوی تر و قابل اعتمادتر شده است
نسبت به منابع بسته و قفل شده یا حتی منابع باز امکان پذیر بود
(مانند STS) که فاقد مکانیسم بازخورد دینامیکی هستند که اجازه انجام اصلاحات را می دهد
مشترک

حتی اشتباهات کوچک در آمار تست اجازه می دهد جایگزین (معمولاً بیان نشده) null
فرضیه تبدیل شدن به یک عامل مهم در آزمون rng -- احتمال ناخواسته که
ژنراتور شما خوب است اما همینطور است آزمون که در حال شکست است. یکی فوق العاده مفید
ویژگی dieharder این است که حداقل در حد متوسط ​​است خود اعتبار سنجی با استفاده از "طلا
استاندارد" aes و ژنراتورهای رمزنگاری سه ماهی، می توانید نحوه این ژنراتورها را مشاهده کنید
در اجراهای سخت‌تر با همان درجه دقت کلی که می‌خواهید از آن استفاده کنید، اجرا کنید
ژنراتورهایی که در حال آزمایش هستید به طور کلی، تست‌های سخت‌تر که به طور مداوم در هر کدام با شکست مواجه می‌شوند
سطح دقت داده شده (انتخاب شده با به عنوان مثال -a -m 10) در هر دو Rng استاندارد طلا
(و/یا ژنراتورهای GSL بهتر، mt19937، gfsr4، taus) احتمالاً در این مورد غیرقابل اعتماد هستند.
دقت و به سختی تعجب آور خواهد بود که ژنراتور شما را نیز خراب کنند.

کارشناسان آمار تشویق می شوند تا مجموعه را امتحان کنند، شاید از هر یک از آنها استفاده کنند
در ابتدا به عنوان مثال زیر را فراخوانی می کند و سپس آزادانه از آن در ژنراتورهای خود یا به عنوان یک استفاده می کند
مهار برای اضافه کردن تست های خود را. تازه کارها (به آمار یا عدد تصادفی
تست ژنراتور) هستند به شدت تشویق به خواندن بخش بعدی در مورد p-values ​​و the
فرضیه صفر و اجرای مجموعه آزمایشی چند بار با گزارش خروجی مفصل تر
تا یاد بگیرند که چگونه کل کار می کند.

سریع استارت مثال ها


نمونه هایی برای نحوه راه اندازی لوله یا ورودی فایل در زیر آورده شده است. با این حال، توصیه می شود
که کاربر با برخی از ژنراتورهای داخلی بازی کند تا با دیهاردر آشنا شود
گزارش ها و آزمایشات را قبل از مقابله با ژنراتور یا فایل مورد علاقه خود پر از احتمالاً انجام می دهند
اعداد تصادفی

برای مشاهده گزارش تست استاندارد پیش فرض dieharder برای ژنراتور پیش فرض آن (mt19937) به سادگی
اجرا کن:

dieharder -a

برای افزایش وضوح خطاهای احتمالی تست استاندارد -a(ll)، از -m استفاده کنید
"ضریب" برای اعداد پیش فرض آزمایشی pvalues ​​(که بیشتر برای ایجاد a انتخاب می شوند
اجرای آزمایشی کامل به جای چند روز، یک ساعت یا بیشتر طول می کشد، زیرا واقعاً جامع است
دنباله تست) اجرا کنید:

dieharder -a -m 10

برای آزمایش یک ژنراتور دیگر (مثلاً استاندارد طلایی AES_OFB) به سادگی ژنراتور را مشخص کنید
در خط فرمان با یک پرچم:

diaharder -g 205 -a -m 10

استدلال ها می توانند به هر ترتیبی باشند. ژنراتور را نیز می توان با نام انتخاب کرد:

diaharder -g AES_OFB -a

بکار گرفتن فقط تست opso diehard به ژنراتور AES_OFB، تست را با نام یا مشخص کنید
عدد:

diaharder -g 205 -d 5

or

dieharder -g 205 -d diehard_opso

تقریباً هر جنبه یا زمینه در قالب گزارش خروجی dieharder توسط کاربر قابل انتخاب است
ابزار نمایش پرچم های گزینه. علاوه بر این، کاراکتر جداکننده فیلد را می توان انتخاب کرد
توسط کاربر برای آسان کردن خروجی برای تجزیه (-c '') یا وارد کردن به آن
یک صفحه گسترده (-c ','). تلاش كردن:

dieharder -g 205 -d diehard_opso -c ',' -D test_name -D pvalues

برای مشاهده یک گزارش بسیار مختصر و آسان برای وارد کردن یا

dieharder -g 205 -d diehard_opso -c ' ' -D پیش فرض -D هیستوگرام -D توضیحات

برای دیدن یک گزارش پرمخاطب خوب برای یک "مبتدی" که شامل توضیحات کامل هر کدام است
خود را آزمایش کند

در نهایت، باینری سخت‌تر به‌طور قابل‌توجهی مستندسازی خودکار می‌شود، حتی اگر صفحه مرد نباشد
در دسترس. همه کاربران باید دستورات زیر را امتحان کنند تا ببینند چه کاری انجام می دهند:

dieharder -h

(خلاصه دستور را مانند تصویر بالا چاپ می کند).

dieharder -a -h
dieharder -d 6 -h

(توضیحات آزمون را فقط برای آزمون های -a(ll) یا برای آزمون خاص مشخص شده چاپ می کند).

dieharder -l

(تمام تست‌های شناخته شده را فهرست می‌کند، از جمله اینکه rgb تا چه اندازه قابل اعتماد است که آن‌ها را همانطور که همه چیز نشان می‌دهد).

diaharder -g -1

(همه rng های شناخته شده را فهرست می کند).

dieharder -F

(تمام پرچم‌های کنترل نمایش/خروجی شناخته شده فعلی را که با -D استفاده می‌شوند، فهرست می‌کند).

هم مبتدیان و هم متخصصان باید بدانند که ارزیابی ارائه شده توسط dieharder در
گزارش استاندارد آن را باید با شک و تردید زیاد در نظر گرفت. کاملا امکان پذیر است برای
یک ژنراتور برای "گذراندن" تمام تست ها تا آنجا که به مقادیر p فردی آنها مربوط می شود و هنوز
وقتی همه آنها را با هم در نظر می گیریم، کاملاً شکست می خورند. به همین ترتیب است احتمالی که یک RNG
حداقل در 0، 1 یا 2 تست در یک اجرای معمولی -a(ll) به عنوان "ضعیف" نشان داده می شود، و
حتی ممکن است در 1 آزمایش یکی از این موارد در 10 یا بیشتر "شکست" بخورد. برای درک اینکه چرا این چنین است، این است
برای درک چیزی از rng آزمایش کردن، مقادیر p و la تهی فرضیه!

P-VALUES و L' NULL فرضیه


dieharder "p-values" را برمی گرداند. برای درک اینکه یک p-value چیست و چگونه از آن استفاده کنید، این است
ضروری برای درک تهی فرضیه، H0

فرضیه صفر برای آزمایش مولد اعداد تصادفی این است که "این مولد یک کامل است
مولد اعداد تصادفی، و برای هر انتخاب از دانه تولید بی نهایت طولانی، منحصر به فرد
دنباله ای از اعدادی که تمام ویژگی های آماری مورد انتظار اعداد تصادفی را دارند،
به همه سفارشات.» خوب توجه داشته باشید که ما دانستن که این فرضیه از نظر فنی برای همه نادرست است
مولدهای نرم افزار چون دوره ای هستند و محتوای آنتروپی درستی ندارند
این گفته همیشه درست باشد با این حال، بسیاری از سخت افزار ژنراتورها نیز به طور پیشینی از کار می افتند،
زیرا آنها حاوی سوگیری یا همبستگی های ظریف به دلیل فیزیک قطعی هستند که
زیربنای آنهاست. طبیعت اغلب است غیرقابل پیش بینی اما به ندرت است تصادفی و دو کلمه
(کاملا) به همین معنی نیست!

فرضیه صفر می تواند باشد عملا درست است، با این حال. هم نرم افزار و هم سخت افزار
ژنراتورها می توانند "تصادفی" باشند کافی که توالی آنها را نمی توان از تصادفی تشخیص داد
آنهایی که، حداقل نه به راحتی یا با ابزارهای موجود (از جمله diaharder!) از این رو
فرضیه صفر یک گزاره عملی است، نه از لحاظ نظری خالص.

برای آزمایش H0 ، یکی از rng مورد نظر برای تولید یک دنباله احتمالاً تصادفی استفاده می کند
شماره. با استفاده از این اعداد می توان هر یک از طیف وسیعی از اعداد را تولید کرد آزمون ارقام
-- اعداد محاسبه شده تجربی که در نظر گرفته می شوند تصادفی نمونه ها که ممکن است باشد یا نباشد
بسته به اینکه آیا توالی‌های اعداد تصادفی با هم تداخل دارند یا خیر، متغیر H0 است
برای تولید نمونه‌های متوالی در حین تولید آمار(های) برگرفته از یک مشخصه استفاده می‌شود
توزیع از آگاهی از توزیع هدف آمار(ها) و
تابع توزیع تجمعی مرتبط (CDF) و تجربی مقدار تصادفی
آمار(های) تولید شده، می توان احتمال به دست آوردن نتیجه تجربی را خواند
if la دنباله بود صادقانه تصادفی، یعنی اگر فرضیه صفر درست باشد و
مولد مورد نظر یک مولد اعداد تصادفی "خوب" است! این احتمال "p-
مقدار" برای اجرای آزمایشی خاص.

به عنوان مثال، برای آزمایش یک سکه (یا دنباله ای از بیت ها) ممکن است به سادگی تعداد آنها را بشماریم
سر و دم در یک رشته بسیار طولانی از تلنگرها. اگر فرض کنیم که سکه یک «کامل
سکه»، انتظار داریم تعداد سر و دم باشد به صورت دوجمله ای توزیع شده و می تواند به راحتی
احتمال به دست آوردن هر تعداد خاص سر و دم را محاسبه کنید. اگر ما
تعداد سر و دم ثبت شده ما از سری آزمایشی را با این توزیع مقایسه کنید
و دریابید که احتمال به دست آوردن تعداد بدست آمده است بسیار پایین با، بگو، راه
بیشتر از دم سر ما گمان می کنیم که سکه یک سکه کامل نیست. dieharder این را اعمال می کند
بسیار تست (از نظر ریاضی دقیق) و بسیاری دیگر که بر روی همین کار می کنند
اصل به رشته بیت های تصادفی تولید شده توسط rng مورد آزمایش برای ارائه a
تصویری از اینکه rng چقدر "تصادفی" است.

توجه داشته باشید که دگم معمول این است که اگر مقدار p کم باشد - معمولاً کمتر از 0.05 - یک
فرضیه صفر را رد می کند. در یک کلام، بعید است که یک نفر به نتیجه برسد
اگر ژنراتور خوب باشد به دست می آید. اگر مقدار دیگری باشد، فرد "می پذیرد"
ژنراتور به عنوان خوب، شخص "نمی تواند" ژنراتور را به عنوان بد برای این خاص رد کند
تست. از این رو یک "مولد اعداد تصادفی خوب" چیزی است که ما نتوانسته ایم بسازیم
شکست خوردن هنوز!

این معیار البته در نهایت ساده لوحانه است نمی توان be استفاده با سخت تر! It
رد کردن مولدهایی که مقادیر p 0.95 یا بیشتر دارند به همان اندازه منطقی است! هر دو
این محدوده های p-value هستند به همان اندازه بعید در هر اجرای آزمایشی داده شده، و باید برگردانده شود
برای (به طور متوسط) 5٪ از تمام تست های اجرا شده توسط a کامل مولد اعداد تصادفی یک ژنراتور
که موفق به تولید مقادیر p کمتر از 0.05 در 5٪ مواقع با آزمایش های مختلف نمی شود.
دانه ها یک است بد مولد اعداد تصادفی، یکی که نتواند آزمون فرضیه صفر
از آنجایی که dieharder به طور پیش فرض بیش از 100 pvalue را برمی گرداند برای آزمون، می توان انتظار داشت
برای "شکست" در چنین آزمون ساده لوحانه ای تقریباً پنج بار با این معیار در a
تک دویدن سخت تر!

خود مقادیر p، همانطور که مشخص است، آمار تست هستند! با توجه به ماهیت آنها، مقادیر p
باید به طور یکنواخت در محدوده 0-1 توزیع شود. در 100+ اجراهای آزمایشی با مستقل
بذرها، نباید از بدست آوردن 0، 1، 2 یا حتی (به ندرت) 3 مقدار p کمتر تعجب کرد.
از 0.01 از طرف دیگر به دست آوردن 7 مقدار p در محدوده 0.24-0.25 یا دیدن آن
70 عدد از مقادیر p بزرگتر از 0.5 است که ژنراتور را به شدت مشکوک می کند! چگونه می توان
یک کاربر تعیین می کند که یک تست چه زمانی "بیش از حد" از هر محدوده مقدار خاصی را برای p تولید می کند؟
یا خیلی کم؟

Dieharder این کار را به صورت خودکار برای شما انجام می دهد. در واقع می توان a را تبدیل کرد تنظیم از مقادیر p به
یک مقدار p با مقایسه توزیع آنها با مقدار مورد انتظار، با استفاده از کولموگروف-اسمیرنوف
آزمون در برابر توزیع یکنواخت مورد انتظار p.

اینها مقادیر p به دست آمده از مشاهده توزیع مقادیر p باید به نوبه خود باشد
به طور یکنواخت توزیع شده و در اصل می تواند تحت آزمایشات KS بیشتری قرار گیرد
تجمیع. توزیع مقادیر p برای a خوب ژنراتور باید باشد ناتوان، حتی
در میان آمارهای مختلف تست و اجراهای متعدد.

شکست در توزیع مقادیر p در هر سطحی از تجمع، مشکل را نشان می دهد. که در
در واقع، اگر مقادیر p هر آزمون داده شده تحت یک آزمون KS قرار گیرند، و آن مقادیر p
سپس تحت یک آزمون KS قرار می گیرد، زیرا مقادیر p بیشتری را به هر سطح اضافه می کنیم
مشاهده ناتوانی توزیع حاصل از p تا یکنواختی، or مشاهده خواهیم کرد
ناتوانی به یک مقدار p واحد از صفر! یعنی یک ژنراتور خوب تقریباً تولید خواهد کرد
توزیع یکنواخت مقادیر p، به معنای خاص که مقادیر p از
توزیع مقادیر p خود تقریباً یکنواخت است و به همین ترتیب تا بی نهایت، در حالی که a
مولد بد توزیع غیر یکنواختی از مقادیر p و مقادیر p بیشتری تولید می کند
برگرفته از توزیع غیر یکنواخت به آزمون KS آن اضافه می شود، در نقطه ای از
شکست کاملاً غیرقابل ایراد خواهد بود زیرا p-value حاصل از آن به 0 نزدیک می شود
حد. دردسر واقعا!

سوال این است که مشکل از چه چیزی است؟ تست های اعداد تصادفی خود پیچیده هستند
اشیاء محاسباتی، و این احتمال وجود دارد که کد آنها به اشتباه کادربندی شده باشد یا
که خطاهای گردآوری یا سایر خطاهای عددی -- نه روشی -- به الف کمک می کنند
تحریف توزیع برخی از مقادیر p به دست آمده. این بیکار نیست
مشاهده؛ وقتی کسی روی نوشتن برنامه های آزمایشی مولد اعداد تصادفی کار می کند، این کار را انجام می دهد
همیشه آزمایش خود آزمون ها با مولدهای اعداد تصادفی "خوب" (ما امیدواریم) به طوری که
شکست های فاحش فرضیه صفر نشان دهنده یک مولد بد نیست بلکه یک خطا در آن است
کد تست فرضیه صفر بالا به درستی از a قاب بندی شده است نظری نقطه
دید، اما از یک واقعی و عملی از دیدگاه باید خوانده شود: "این ژنراتور یک
مولد اعداد تصادفی کامل، و برای هر انتخابی از دانه، بی نهایت طولانی تولید می کند،
دنباله ای منحصر به فرد از اعداد که دارای تمام ویژگی های آماری مورد انتظار تصادفی هستند
اعداد برای تمام سفارشات و این تست یک تست کامل است و دقیقا p- صحیح را برمی گرداند.
مقادیر حاصل از محاسبات آزمون." "شکست" این فرضیه صفر مشترک مشاهده شد H0'
می تواند ناشی از خرابی هر یک یا هر دوی این مؤلفه های مجزا باشد و از
دوم در طول فرآیند توسعه آزمون، اغلب یا بیشتر از اولین بار. چه زمانی
یکی "رزولوشن" آزمون (که در ادامه بحث شد) را به جایی می رساند که یک ژنراتور شروع به کار می کند.
با شکست در آزمونی، فرد متوجه می شود، یا باید متوجه شود که توسعه هرگز پایان نمی یابد و این امر جدید است
رژیم‌های آزمایشی همیشه خرابی‌های جدید را نه تنها در ژنراتورها بلکه در کد نشان می‌دهند.

با این اوصاف، یکی از مهمترین مزایای دای هارد، کنترل آن است
یک پارامتر تست بحرانی را به شما می دهد. از اظهارات بالا می توان دریافت که ما
باید احساس کند بسیار ناراحت در مورد "شکست" هر مولد اعداد تصادفی داده شده در
بر اساس یک معیار 5٪ یا حتی یک٪، به خصوص زمانی که یک آزمون را اعمال می کنیم دنباله حرفه ای
diaharder که بیش از 100 (و صعودی) مقدار p-آزمایشی متمایز را در آخرین مورد برمی گرداند.
عکس فوری ما می خواهیم شکست بدون ابهام و تکرارپذیر باشد!

برای انجام این کار، می توان به سادگی وضوح آن را افزایش داد. اگر هر آزمونی را اجرا کنیم
در برابر یک مولد اعداد تصادفی و یک مقدار p (مثلاً) 0.007328 را برگرداند،
کاملاً موجه است که بدانم آیا واقعاً ژنراتور خوبی است یا خیر. با این حال
احتمال به دست آوردن این نتیجه واقعاً آنقدرها هم کم نیست -- وقتی کسی از سخت‌تر استفاده می‌کند
برای ساعت ها در یک زمان، اعدادی مانند این قطعاً بسیار مکرر و مهم اتفاق می افتد
هیچ چیزی. اگر یکی را اجرا کند همان دوباره تست کنید (با یک دانه متفاوت یا بخشی از تصادفی
دنباله) و مقدار p برابر 0.009122 و بار سوم و 0.002669 را دریافت می کند -- خوب،
که سه ضربه 1% (یا کمتر) پشت سر هم و که باید فقط یک در میلیون اتفاق بیفتد
بار. پس یکی از راه‌های حل واضح شکست‌ها این است که افزایش دادن la عدد of مقادیر p
تولید شده در یک اجرای آزمایشی اگر توزیع واقعی p برگردانده شده توسط آزمون باشد
یکنواخت نیست، یک آزمون KS انجام خواهد شد در نهایت مقدار p را برگردانید که مبهم نباشد
0.035517 اما در عوض 0.000000 است، که مورد دوم هر چند وقت یکبار با اجرای مجدد تولید می شود.

به همین دلیل، dieharder است خیلی محافظه کار در مورد اعلام rng "ضعف" یا
"شکست" نسبت به هر آزمون داده شده. معیار داخلی برای این موارد است
در حال حاضر p < 0.5٪ یا p > 99.5٪ ضعف (در سطح 1٪ کل) و یک بطور قابل توجهی بیش
معیار دقیق برای شکست: p <0.05٪ یا p> 99.95٪. خوب توجه داشته باشید که محدوده ها هستند
متقارن -- مقدار خیلی زیاد p به همان اندازه بد (و بعید) است که خیلی کم است.
بحرانی آن را پرچم گذاری کنید، زیرا ممکن است یک rng باشد هم خوب، به طور متوسط،
و نه تولید کافی مقادیر p پایین در طیف کامل تست‌های سخت‌گیر. این هست
جایی که kstest نهایی از اهمیت بالایی برخوردار است و گزینه "هیستوگرام" در کجا می تواند باشد
بسیار مفید برای کمک به شما در تجسم شکست در توزیع p -- اجرا به عنوان مثال:

dieharder [هر چیزی] -D پیش فرض -D هیستوگرام

و شما یک هیستوگرام ascii خام از مقادیری را خواهید دید که از هر داده ای ناموفق (یا عبور کرده اند).
سطح آزمون

گزارش های پراکنده از ضعف یا شکست نهایی در اجرای اولیه -a(ll) باید
بنابراین دلیل فوری برای هشدار نباشید. بلکه آزمون هایی برای تکرار و تماشا هستند
out for، برای فشار دادن rng با استفاده از گزینه -m به -a یا به سادگی افزایش -p برای a
تست خاص Dieharder به فرد اجازه می دهد تا تعداد p-value های تولید شده را افزایش دهد هر
آزمون، تنها مشروط به در دسترس بودن اعداد تصادفی کافی (برای آزمون های مبتنی بر فایل) و
زمان، تا شکست ها را بدون ابهام کنیم. تستی که هست صادقانه ضعیف در -p 100 تقریبا
همیشه در مقادیر بزرگتری از نمونه ها، چه -p 1000 و چه -p 100000، به شدت شکست بخورد.
با این حال، زیرا dieharder یک ابزار تحقیقاتی است و در حال توسعه دائمی است و
آزمایش، آن است به شدت پیشنهاد که همیشه فرضیه صفر جایگزین را در نظر بگیرید
-- که شکست شکست کد تست در خود dieharder در برخی از حد است
اعداد بزرگ -- و حداقل برخی از مراحل را بردارید (مانند اجرای یک آزمون به طور همزمان
رزولوشن بر روی یک ژنراتور "استاندارد طلا") تا اطمینان حاصل شود که شکست واقعاً احتمالاً وجود دارد
در rng و نه کد dieharder.

نداشتن منبع کامل اعداد تصادفی برای استفاده به عنوان مرجع، اعتبار تست ها
خودشان آسان نیستند و همیشه یکی را با ابهام (حتی aes یا threefish) رها می کنند.
در طول توسعه، بهترین کاری که می‌توان انجام داد این است که به شدت بر این «خوب فرضی» تکیه کنیم.
مولد اعداد تصادفی تعدادی ژنراتور وجود دارد که ما به صورت نظری داریم
دلایلی برای اینکه انتظار داشته باشیم فوق العاده خوب باشیم و با برخی شناخته شده ارتباط نداشته باشیم
ابعاد زیرین، و این نیز بسیار خوب و کاملاً ثابت آزمایش می شود. توسط
با استفاده از چندین ژنراتور از این دست و نه تنها یک، می توان امیدوار بود که آن ژنراتورها دارای آن باشند
(حداقل) مختلف همبستگی است و نباید همه به طور یکنواخت در یک آزمون شکست بخورند
به همین ترتیب و با همان تعداد p-value. وقتی همه این ژنراتورها همواره
در یک آزمون در یک سطح معین مردود می شوم، من تمایل دارم که مشکوک باشم که مشکل در کد تست است، نه
ژنراتورها، اگرچه بودن بسیار دشوار است مسلم - قطعی، و خطاهای زیاد در
کد dieharder فقط به این روش توسط من یا خودم کشف و در نهایت رفع شده است
دیگران.

یکی از مزیت های دی هاردر این است که تعدادی از این "ژنراتورهای خوب" را بلافاصله دارد
در دسترس برای اجراهای مقایسه، با حسن نیت از کتابخانه علمی Gnu و کاربر
مشارکت (به ویژه دیوید بائر، که با مهربانی aes و threefish را دربرگرفت). من استفاده می کنم
AES_OFB، Threefish_OFB، mt19937_1999، gfsr4، ranldx2 و taus2 (و همچنین "تصادفی واقعی"
اعداد از random.org) برای این منظور، و من سعی می کنم اطمینان حاصل کنم که dieharder "گذر" می کند
به ویژه ژنراتور -g 205 -S 1 -s 1 در هر وضوح p-value منطقی به
-p 1000 یا بیشتر.

تست هایی (مانند تست operm5 و sums) که به طور مداوم انجام می شود شکست خوردن در این ارتفاعات
قطعنامه ها به عنوان "مظنون" علامت گذاری می شوند - شکست های احتمالی جایگزین تهی
فرضیه -- و آنها هستند به شدت منسوخ! نتایج آنها نباید برای آزمایش استفاده شود
مولدهای اعداد تصادفی در انتظار توافق در جامعه آمار و اعداد تصادفی
که آن تست ها در واقع معتبر و صحیح هستند، به طوری که شکست های مشاهده شده در واقع می توانند با خیال راحت باشند
منسوب به شکست از مورد نظر فرضیه صفر.

همانطور که من مدام تاکید می کنم (به دلیل خوب!) سخت تر از جامعه حمایت می شود. من بنابراین
علناً از کاربران dieharder که در آمار تخصص دارند بخواهید که به من کمک کنند تا مشکل را برطرف کنم
کد یا الگوریتم های در حال پیاده سازی من دوست دارم این مجموعه آزمایشی را در نهایت ببینم
تایید شده توسط جامعه آمار عمومی در استفاده سخت در یک محیط باز، که در آن
هر خرابی احتمالی مکانیزم تست خود در معرض بررسی دقیق و نهایی است
تصحیح به این ترتیب ما در نهایت به مجموعه بسیار قدرتمندی از ابزارها دست خواهیم یافت،
مواردی که ممکن است اطلاعات بسیار خاصی را نه تنها در مورد شکست بلکه در مورد شکست به ما ارائه دهند
حالت در مورد شکست نیز، نحوه انحراف دنباله آزمایش شده از تصادفی بودن.

تا کنون، dieharder از جامعه سود بسیار زیادی برده است. افراد دارند
آزمایش‌هایی که به‌طور آشکار ارائه شده، ژنراتورهای جدیدی که باید آزمایش شوند، و اصلاحاتی برای آزمایش‌های موجود
توسط کار خود با ابزار تست آشکار شدند. تلاش ها در حال انجام است
سخت تر قابل حمل تر است به طوری که آن را بر روی پلت فرم های بیشتر و سریع تر به طوری که بیشتر ساخته شود
می توان آزمایش کامل انجام داد. لطفا با خیال راحت شرکت کنید.

فایل INPUT


ساده ترین راه برای استفاده از دی هارد با یک ژنراتور خارجی که باینری خام تولید می کند
بیت های (تصادفی فرضی) برای لوله کردن خروجی باینری خام از این ژنراتور است (فرض
یک جریان باینری از اعداد صحیح بدون علامت 32 بیتی باشد) به طور مستقیم در dieharder، به عنوان مثال:

cat /dev/urandom | ./dieharder -a -g 200

ادامه دهید و این مثال را امتحان کنید. این کل مجموعه تست‌های سخت‌تر را روی آن اجرا می‌کند
جریان تولید شده توسط ژنراتور داخلی لینوکس /dev/urandom (استفاده از /dev/random نیست
توصیه می شود زیرا آزمایش آن در مدت زمان معقول بسیار کند است).

روش دیگر، dieharder می تواند برای آزمایش فایل های اعداد تولید شده توسط یک نامزد استفاده شود
مولد اعداد تصادفی:

dieharder -a -g 201 -f random.org_bin

برای ورودی باینری خام یا

dieharder -a -g 202 -f random.org.txt

برای ورودی ascii فرمت شده

یک فایل ورودی ascii فرمت شده می تواند هر یک از واحدها را بپذیرد (اعداد صحیح در محدوده 0 تا 2^31-1،
یک در هر خط) یا یکنواخت اعشاری با حداقل ده رقم قابل توجه منحرف می شود (که می تواند
ضرب شود در UINT_MAX = 2^32 برای تولید یک واحد بدون کاهش دقت)، همچنین یک
در هر خط اگرچه شناورهایی با ارقام کمتر تقریباً مطمئناً در آزمون‌های سطح بیت شکست خواهند خورد
آنها ممکن است برخی از تست هایی را که بر روی انحرافات یکنواخت عمل می کنند را بگذرانند.

در نهایت، می توان به راحتی هر ژنراتوری را در همان مهار اعداد تصادفی (GSL) قرار داد
به صورت داخلی توسط دی هاردر استفاده می شود و به سادگی آن را به همان روشی که هر داخلی دیگر آزمایش می کند، آزمایش کنید
ژنراتور شناخته شده توسط dieharder در جایی که امکان دارد این کار به شدت توصیه می شود،
زیرا dieharder نیاز به استفاده از a خیلی از اعداد تصادفی برای آزمایش کامل یک مولد. آ
ژنراتور ساخته شده به سادگی می تواند به دیهارد اجازه دهد تا تعیین کند که به چه تعداد نیاز دارد و آنها را تولید کند
در صورت تقاضا، که در آن فایلی که خیلی کوچک است به عقب برمی‌گردد و نتایج آزمایش را در جایی ارائه می‌کند
یک معکوس رخ می دهد مشکوک.

خوب توجه داشته باشید که رندهای ورودی فایل به صورت درخواستی به تست ها تحویل داده می شوند، اما در صورت آزمایش
به چیزی بیش از آنچه در دسترس است نیاز دارد، به سادگی فایل را به عقب برگردانده و دوباره در آن چرخش می کند، و
دوباره و دوباره در صورت نیاز بدیهی است که این به طور قابل توجهی فضای نمونه و می تواند را کاهش می دهد
منجر به نتایج کاملاً نادرستی برای هیستوگرام های p-value می شود مگر اینکه به اندازه کافی وجود داشته باشد
اجرای هر آزمون بدون تکرار (استفاده مجدد از دنباله برای آن بی ضرر است
تست های مختلف). اجازه دهید کاربر مراقب باشد!

بهترین تمرین


یک سوال متداول از کاربران جدیدی که مایل به آزمایش ژنراتوری هستند که روی آن کار می کنند
برای سرگرمی یا سود (یا هر دو) این است که "چگونه باید خروجی آن را به سخت‌تر برسانم؟" این یک است
سوال بی اهمیت، همانطور که سخت تر مصرف می کند عظیم تعداد اعداد تصادفی به صورت کامل
چرخه تست، و سپس ویژگی هایی مانند -m 10 یا -m 100 وجود دارد که به شما اجازه می دهد بدون دردسر
نیاز به 10 یا 100 برابر بیشتر برای تحت فشار قرار دادن یک ژنراتور جدید.

حتی با بزرگ پرونده پشتیبانی در dieharder، ارائه تصادفی کافی دشوار است
اعداد موجود در یک فایل واقعاً باعث خوشحالی بیشتر افراد می شود. بنابراین است به شدت پیشنهاد که
شما یا:

الف) مرحله خروجی مولد اعداد تصادفی خود را ویرایش کنید و آن را وادار به نوشتن آن کنید
تولید به stdout به عنوان یک تصادفی ذره جریان - اساساً تصادفی بدون علامت 32 بیتی ایجاد کنید
اعداد صحیح و آنها را مستقیماً در stdout به عنوان مثال char داده یا باینری خام بنویسید. توجه داشته باشید که
این است نه مانند نوشتن اعداد ممیز شناور خام (که اصلا تصادفی نخواهد بود
به‌عنوان یک جریان بیت) و این «اندینی بودن» واحدها نباید برای تهی مهم باشد
فرضیه یک مولد "خوب"، زیرا بایت های تصادفی به هر ترتیبی تصادفی هستند. میل لنگ
این جریان را در لوله ای که در بالا توضیح داده شد به دیهاردر تغذیه کنید.

ب) از نمونه‌های rng‌های سخت‌گیر بسته‌شده با GSL برای بسته‌بندی مشابه ژنراتور خود استفاده کنید (یا
تماس با رابط سخت افزاری ژنراتور شما). مثال های موجود در ./dieharder را دنبال کنید
دایرکتوری منبع برای اضافه کردن آن به عنوان یک مولد "کاربر" در رابط خط فرمان، بازسازی،
و ژنراتور را به‌عنوان یک مولد دیهارد «بومی» فراخوانی کنید (باید در لیست ظاهر شود
تولید شده توسط -g -1 زمانی که به درستی انجام شود). مزیت انجام این کار این است که شما
سپس (اگر ژنراتور جدید شما بسیار موفق باشد) می تواند آن را به دیهاردر بازگرداند
در صورت تمایل پروژه ناگفته نماند که آزمایش آن را بسیار آسان می کند.

اکثر کاربران احتمالاً حداقل در ابتدا گزینه a) را انتخاب می کنند، اما توجه داشته باشید که b) چنین است
احتمالا راحت تر از چیزی که فکر می کنید نگهدارنده های سخت تر ممکن است بتواند به شما دست بدهد
با آن اگر به دردسر افتادید، اما بدون قول.

هشدار!


یک هشدار برای کسانی که در حال آزمایش فایل های اعداد تصادفی هستند. dieharder ابزاری است که
تست تصادفی عدد ژنراتورها ، نه فایل ها of تصادفی شماره! فوق العاده است
تلاش برای "تأیید" تصادفی بودن یک فایل از اعداد تصادفی فقط به این دلیل که
در هر یک از تست‌های سخت‌گیر شکست خورده است، به‌عنوان مثال، یک دویدن سخت‌گیر. به صراحت بگویم،
اگر کسی همه این فایل‌ها را که در هر آزمونی در سطح 0.05 (یا هر آزمون دیگری) مردود هستند رد کند،
چیزی که می توان از آن مطمئن بود این است که فایل های مورد نظر هستند نه تصادفی، به عنوان یک واقعا
توالی تصادفی در هر آزمونی در سطح 0.05 در 5% مواقع مردود می شود!

به بیان دیگر، هر فایل اعدادی که توسط a ژنراتور که "شکست نمی خورد"
مجموعه dieharder را باید "تصادفی" در نظر گرفت، حتی اگر شامل دنباله هایی باشد که
به خوبی ممکن است در هر آزمونی در یک بریدگی خاص "شکست" بخورد. باید آن گذر را فرض کرد
با آزمایش های گسترده تر خود ژنراتور مشخص شد که مقادیر p برای
آزمون درگیر بود در سراسر جهان به درستی توزیع شده است، به طوری که به عنوان مثال شکست در سطح 0.01
به طور متوسط ​​در بسیاری از آزمایش‌ها نه بیشتر و نه کمتر از 1% مواقع اتفاق می‌افتد. اگر
یک فایل خاص در این سطح یک شکست ایجاد می کند، بنابراین می توان با خیال راحت فرض کرد
که آن است تصادفی فایل از هزاران فایل مشابه که ژنراتور ممکن است استخراج شده است
ایجاد می کنند که توزیع صحیح p-value ها را در تمام سطوح تست و
تجمع.

به طور خلاصه، از dieharder برای تأیید اعتبار مولد خود استفاده کنید (از طریق ورودی از فایل ها یا جاسازی شده
جریان). سپس به هر طریقی از ژنراتور خود برای تولید فایل ها یا جریان های تصادفی استفاده کنید
شماره. از dieharder به عنوان ابزار پذیرش/رد برای اعتبارسنجی استفاده نکنید la فایل ها خودشان!

مثال ها


برای نشان دادن همه تست‌ها، روی Rng پیش‌فرض GSL اجرا کنید، وارد کنید:

dieharder -a

برای نشان دادن آزمایش یک مولد خارجی یک جریان باینری خام از بیت ها، از
رابط stdin (خام):

cat /dev/urandom | diaharder -g 200 -a

برای استفاده از آن با یک فایل فرمت شده ascii:

dieharder -g 202 -f testrands.txt -a

(testrands.txt باید از یک هدر مانند:

#================================================= ==================
# ژنراتور mt19937_1999 seed = 1274511046
#================================================= ==================
نوع: د
تعداد: 100000
بی حسی: 32
3129711816
85411969
2545911541

و غیره).

برای استفاده از آن با یک فایل باینری

dieharder -g 201 -f testrands.bin -a

or

گربه testrands.bin | diaharder -g 200 -a

مثالی که استفاده از "پیشوند" را در خطوط خروجی که آن را می سازند نشان می دهد
فیلتر کردن بخش های مختلف گزارش خروجی و خرد کردن آنها نسبتاً آسان است
به اعدادی که می توانند در برنامه های دیگر یا در صفحات گسترده استفاده شوند، سعی کنید:

dieharder -a -c ',' -D پیشوند پیش فرض -D

نمایش دادن OPTIONS


از نسخه 3.xx، dieharder دارای یک رابط خروجی واحد است که داده های جدولی را تولید می کند
در هر آزمون، با اطلاعات رایج در سرفصل ها. گزینه های کنترل نمایشگر و پرچم ها می توانند
برای سفارشی کردن خروجی بر اساس نیازهای خاص شما استفاده شود.

گزینه ها توسط پرچم های باینری کنترل می شوند. پرچم ها و نسخه های متنی آن ها هستند
نمایش داده می شود اگر وارد کنید:

dieharder -F

به تنهایی روی یک خط

پرچم ها را می توان به یکباره با جمع کردن همه پرچم های گزینه مورد نظر وارد کرد. برای
به عنوان مثال، یک خروجی بسیار پراکنده را می توان با افزودن پرچم ها برای test_name (8) انتخاب کرد.
و مقادیر مربوط به آن (128) برای بدست آوردن 136:

dieharder -a -D 136

از آنجایی که پرچم ها از صفر انباشته می شوند (مگر اینکه هیچ پرچمی وارد نشده باشد و پیش فرض باشد
استفاده می شود) می توانید همان نمایش را از طریق زیر انجام دهید:

pvalues ​​dieharder -a -D 8 -D

توجه داشته باشید که می توانید پرچم ها را بر اساس مقدار یا نام، در هر ترکیبی وارد کنید. چون مردم استفاده می کنند
سخت تر به دست آوردن مقادیر و سپس صادر کردن آنها به صفحات گسترده (با کاما از هم جدا شده است
مقادیر) یا در اسکریپت های فیلتر، می توانید کاراکتر جداکننده فیلد را شانس دهید. برای
مثال:

dieharder -a -c ',' -D پیش فرض -D -1 -D -2

خروجی ای تولید می کند که برای وارد کردن به صفحه گسترده ایده آل است (توجه داشته باشید که می توان آن را کم کرد
مقادیر فیلد از مجموعه پایه فیلدهای ارائه شده توسط گزینه پیش فرض تا زمانی که وجود دارد
ابتدا داده شده است).

یک گزینه جالب پرچم پیشوند -D است که یک پیشوند شناسه فیلد را روشن می کند
فیلتر کردن انواع خاصی از داده ها را آسان می کند. با این حال، چرخش آن به همان اندازه آسان است
بر روی هر نوع خروجی خاص به استثنای دیگران به طور مستقیم از طریق
پرچم ها

دو پرچم دیگر مورد علاقه افراد تازه کار تا آزمایش مولد اعداد تصادفی، -D هستند
هیستوگرام (هیستوگرام pvalue های زیرین را در هر آزمون روشن می کند) و توضیحات -D
(توضیح کامل آزمون را در هر آزمون روشن می کند). این پرچم ها جدول خروجی را تبدیل می کنند
بیشتر از یک سری "گزارش" از هر آزمون.

RELEASE قوانین


سخت تر کد کاملاً اورجینال است و هر کاربر می تواند آن را تغییر داده و مورد استفاده قرار دهد.
به شرطی که:

الف) اعلامیه‌های حق چاپ اصلی حفظ می‌شوند و منبع، از جمله همه
تغییرات، در زمان هر انتشار مشتق شده در دسترس عموم قرار می گیرد. این
نرم افزار منبع باز مطابق با قوانین و روح مجوز عمومی Gnu است.
فایل ضمیمه COPYING را ببینید، که همچنین باید هر گونه توزیع مجدد را همراهی کند.

ب) نویسنده اصلی کد (رابرت جی. براون) به درستی تایید شده است و
در هر نشریه مشتق شده ارجاع داده شده است. قویاً پیشنهاد می شود که جورج مارسالیا و
مجموعه Diehard و نویسندگان مختلف مجموعه آزمون آماری مشابه هستند
تصدیق کرد، اگرچه این مجموعه هیچ کد واقعی با این تست اعداد تصادفی به اشتراک نمی گذارد
سوئیت ها

ج) مسئولیت کامل صحت، تناسب و اثربخشی برنامه
متعلق به کاربران و/یا اصلاح‌کننده‌ها است. همانطور که به وضوح در ضمیمه آمده است
copyright.h:

دارندگان حق نسخه‌برداری از تمام ضمانت‌های مربوط به این نرم‌افزار، از جمله همه
ضمانت‌های ضمنی تجارت و تناسب اندام، در هیچ موردی به دارندگان حق نسخه‌برداری تعلق نخواهد گرفت
مسئولیت هر گونه خسارت خاص، غیرمستقیم یا تبعی یا هر گونه خسارت
ناشی از از دست دادن استفاده، داده یا سود، خواه در یک اقدام قراردادی، سهل انگاری
یا سایر اقدامات خطرناک، ناشی از یا در ارتباط با استفاده یا اجرای
این نرم افزار

تقدیرنامه ها


نویسنده این مجموعه با سپاس از جورج مارسالیا (نویسنده کتاب
مجموعه تست diehard) و نویسندگان مختلف NIST Special Publication 800-22 (که
مجموعه تست آماری را برای آزمایش مولدهای اعداد شبه تصادفی برای
برنامه های رمزنگاری)، برای توصیف عالی تست های موجود در آن. اینها
توضیحات این مجموعه را قادر می سازد تا با GPL توسعه یابد.

نویسنده همچنین مایل است مجدداً تأکید کند که صحت و دقت علمی
اجرای این تست ها تنها مسئولیت اوست و نه نویسندگان
مجموعه های Diehard یا STS. این امر به ویژه در مواردی که او صلاح دید آنها را اصلاح کند صادق است
تست ها از توضیحات اصلی دقیق آنها.

کپی رایت


GPL 2b; فایل COPYING همراه با منبع این برنامه را ببینید. این است
"پروانه عمومی عمومی استاندارد Gnu نسخه 2 یا هر نسخه بعدی"، با یک جزئی
(طنز) اصلاح "نوشیدنی" در زیر فهرست شده است. توجه داشته باشید که این اصلاح احتمالاً است
از نظر قانونی قابل دفاع نیست و می توان آن را تا حد زیادی طبق قانون افتخار دنبال کرد.

در مورد ترجیحات شخصی من در نوشیدنی ها، شراب قرمز عالی است، آبجو لذت بخش است، و
کوکا کولا یا قهوه یا چای و یا حتی شیر قابل قبول برای کسانی که برای مذهبی یا شخصی
دلایلی که مایلند از ایجاد استرس در کبد من جلوگیری کنند.

La نوشابه تغییر به la GPL:

هر کاربر راضی از این نرم افزار باید پس از ملاقات با نویسنده(های) اصلی این نرم افزار
نرم افزار برای اولین بار در شرایط مناسب به او پیشنهاد خرید بدهید
یا آنها یک نوشیدنی این نوشیدنی ممکن است الکلی باشد یا نباشد، بسته به شرایط شخصی
دیدگاه های اخلاقی و اخلاقی پیشنهاد دهنده. هزینه نوشیدنی نباید بیش از یک دلار آمریکا باشد
(اگرچه قطعا ممکن است به میل پیشنهاد دهنده:-) و ممکن است پذیرفته یا رد شود
بدون هیچ تعهد دیگری از سوی پیشنهاد دهنده. تکرار آن ضروری نیست
پیشنهاد بعد از اولین جلسه، اما ضرری ندارد...

با استفاده از خدمات onworks.net از dieharder آنلاین استفاده کنید


سرورها و ایستگاه های کاری رایگان

دانلود برنامه های ویندوز و لینوکس

دستورات لینوکس

Ad




×
تبلیغات
❤️اینجا خرید کنید، رزرو کنید یا بخرید - رایگان است، به رایگان ماندن خدمات کمک می‌کند.