مولد اعداد از 1 تا 1000. مولد اعداد تصادفی. نحوه تولید یک عدد تصادفی: دستورالعمل

ما دنباله ای از اعداد داریم که از عناصر تقریباً مستقلی تشکیل شده است که از توزیع معینی تبعیت می کنند. معمولاً به طور مساوی توزیع می شود.

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

تابع اعداد تصادفی در اکسل

  1. تابع RAND یک عدد واقعی تصادفی توزیع شده یکنواخت را برمی گرداند. کمتر از 1، بزرگتر یا مساوی 0 خواهد بود.
  2. تابع RANDBETWEEN یک عدد صحیح تصادفی برمی گرداند.

بیایید با مثال به کاربرد آنها نگاه کنیم.

انتخاب اعداد تصادفی با RAND

این تابع به هیچ آرگومان نیاز ندارد (RAND()).

برای تولید یک عدد واقعی تصادفی بین 1 و 5، برای مثال، از فرمول زیر استفاده کنید: =RAND()*(5-1)+1.

عدد تصادفی برگشتی به طور مساوی در بازه زمانی توزیع می شود.

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

  1. روی سلولی با یک عدد تصادفی کلیک می کنیم.
  2. فرمول را در نوار فرمول برجسته کنید.
  3. F9 را فشار دهید. و وارد کنید.

بیایید یکنواختی توزیع اعداد تصادفی را از اولین نمونه با استفاده از هیستوگرام توزیع بررسی کنیم.


محدوده مقادیر عمودی فرکانس است. افقی - "جیب".



تابع RANDBETWEEN

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

مثالی از استفاده از تابع:

اعداد تصادفی با دقت 0.1 و 0.01:

چگونه یک مولد اعداد تصادفی در اکسل بسازیم

بیایید یک مولد اعداد تصادفی با تولید یک مقدار از یک محدوده خاص بسازیم. ما از فرمولی مانند: =INDEX(A1:A10;INTEGER(RAND()*10)+1 استفاده می کنیم.

بیایید یک مولد اعداد تصادفی در محدوده 0 تا 100 با گام 10 بسازیم.

از لیست مقادیر متنی، باید 2 مورد تصادفی را انتخاب کنید. با استفاده از تابع RAND، مقادیر متن را در محدوده A1:A7 با اعداد تصادفی مقایسه می کنیم.

بیایید از تابع INDEX برای انتخاب دو مقدار متن تصادفی از لیست اصلی استفاده کنیم.

برای انتخاب یک مقدار تصادفی از لیست، فرمول زیر را اعمال کنید: =INDEX(A1:A7,RANDBETWEEN(1,COUNT(A1:A7))).

مولد اعداد تصادفی توزیع عادی

توابع RAND و RANDBETWEEN اعداد تصادفی را با یک توزیع واحد تولید می کنند. هر مقدار با احتمال یکسان می تواند در حد پایین محدوده درخواستی و در محدوده بالایی قرار گیرد. به نظر می رسد که یک اسپرد بزرگ از مقدار هدف.

توزیع نرمال به این معنی است که بیشتر اعداد تولید شده نزدیک به هدف هستند. بیایید فرمول RANDBETWEEN را تصحیح کنیم و یک آرایه داده با توزیع نرمال ایجاد کنیم.

هزینه کالا X 100 روبل است. کل دسته تولید شده در معرض توزیع نرمال است. متغیر تصادفی نیز از توزیع احتمال نرمال پیروی می کند.

در چنین شرایطی، مقدار متوسط ​​محدوده 100 روبل است. بیایید یک آرایه ایجاد کنیم و یک نمودار با توزیع نرمال با انحراف استاندارد 1.5 روبل بسازیم.

ما از تابع: =NORMINV(RAND();100;1.5) استفاده می کنیم.

اکسل محاسبه کرد که چه مقادیری در محدوده احتمالات قرار دارند. از آنجایی که احتمال تولید یک محصول با هزینه 100 روبل حداکثر است، فرمول مقادیر نزدیک به 100 را بیشتر از بقیه نشان می دهد.

بیایید به نقشه کشیدن برویم. ابتدا باید یک جدول با دسته ها ایجاد کنید. برای انجام این کار، آرایه را به دوره های زیر تقسیم می کنیم:

بر اساس داده های به دست آمده می توانیم نموداری با توزیع نرمال تشکیل دهیم. محور ارزش تعداد متغیرها در بازه است، محور دسته دوره ها است.

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

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

این برنامه همچنین می تواند به عنوان یک تولید کننده اعداد تصادفی برای لوتو عمل کند. به عنوان مثال، شما یک بلیط خریده اید و می خواهید در انتخاب اعداد کاملاً به شانس و شانس اعتماد کنید. سپس تصادفی ساز شماره ما به پر کردن بلیط قرعه کشی شما کمک می کند.

نحوه تولید یک عدد تصادفی: دستورالعمل

برنامه اعداد تصادفیبسیار ساده کار می کند شما حتی نیازی به دانلود آن در رایانه خود ندارید - همه چیز در پنجره مرورگر که این صفحه باز است انجام می شود. اعداد تصادفی با توجه به تعداد مشخص شده اعداد و محدوده آنها - از 0 تا 999999999 تولید می شوند.

برای تولید یک شماره آنلاین، شما نیاز دارید:

  1. محدوده ای را که می خواهید در آن نتیجه بگیرید انتخاب کنید. شاید بخواهید اعداد تا 10 یا مثلاً 10000 را قطع کنید.
  2. حذف تکرارها - با انتخاب این مورد، **تصادفی‌ساز عدد** را مجبور می‌کنید تا فقط ترکیب‌های منحصربه‌فرد را در محدوده خاصی به شما ارائه دهد.
  3. تعداد اعداد را انتخاب کنید - از 1 تا 99999.
  4. روی دکمه Generate Numbers کلیک کنید.

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

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

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

دستورالعمل مولد اعداد آنلاین (تصادفی ساز):

به طور پیش فرض، مولد اعداد تصادفی با 1 عدد وارد می شود. اگر تنظیمات برنامه را تغییر دهید، می توانید همزمان تا 250 عدد تصادفی ایجاد کنید. ابتدا باید محدوده را تنظیم کنید. حداکثر مقدار یک عدد 9,999,999,999 است. مولد اعداد تصادفی به شما امکان می دهد اعداد را به ترتیب نزولی، صعودی یا تصادفی مرتب کنید.

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

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

تنظیمات اولیه مولد اعداد تصادفی:

  • مقدار اعداد
  • محدوده اعداد
  • نوع جداکننده
  • روشن / خاموش کردن عملکرد حذف تکرارها (دو عدد اعداد)

تعداد کل به طور رسمی به 1000 محدود شده است، حداکثر تعداد 1 میلیارد است. گزینه های جداکننده: فاصله، کاما، نقطه ویرگول.

اکنون دقیقاً می دانید که کجا و چگونه می توانید یک دنباله رایگان از اعداد تصادفی را در یک محدوده معین در اینترنت دریافت کنید.

موارد استفاده از مولد اعداد تصادفی

مولد اعداد تصادفی (RNG در JS با توزیع یکنواخت) برای متخصصان SMM و صاحبان گروه ها و جوامع در شبکه های اجتماعیاینستاگرام، فیسبوک، Vkontakte، Odnoklassniki برای تعیین برندگان قرعه کشی، مسابقات و قرعه کشی جوایز.

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

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

آیا تا به حال فکر کرده اید که Math.random() چگونه کار می کند؟ عدد تصادفی چیست و چگونه به دست می آید؟ و یک سوال را در یک مصاحبه تصور کنید - مولد اعداد تصادفی خود را در چند خط کد بنویسید. و بنابراین، آن چیست، یک حادثه و آیا می توان آن را پیش بینی کرد؟

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

این مطالب برای همه آن دسته از توسعه دهندگان فرانت اند و توسعه دهندگان Node.js مفید خواهد بود که در خط مقدم فناوری هستند و می خواهند وارد پروژه / استارتاپ بلاک چین شوند، جایی که حتی از توسعه دهندگان فرانت اند در مورد امنیت و رمزنگاری سؤالاتی پرسیده می شود. حداقل در سطح پایه

مولد اعداد تصادفی شبه و مولد اعداد تصادفی

برای بدست آوردن چیزی تصادفی، به منبع آنتروپی نیاز داریم، منبع نوعی آشفتگی که از آن برای تولید تصادفی استفاده کنیم.

این منبع برای جمع آوری آنتروپی و به دنبال آن بدست آوردن مقدار اولیه (مقدار اولیه، دانه) از آن استفاده می شود که برای تولید اعداد تصادفی (RNG) برای تولید اعداد تصادفی ضروری است.

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

آنتروپی - معیاری از بی نظمی است. آنتروپی اطلاعات معیاری برای عدم قطعیت یا غیرقابل پیش بینی بودن اطلاعات است.
به نظر می رسد که برای ایجاد یک دنباله شبه تصادفی، به الگوریتمی نیاز داریم که بر اساس یک فرمول خاص، دنباله ای ایجاد کند. اما چنین توالی را می توان پیش بینی کرد. با این حال، بیایید تصور کنیم که اگر Math.random() را نداشته باشیم چگونه می‌توانیم مولد اعداد تصادفی خودمان را بنویسیم.

PRNG الگوریتمی دارد که می توان آن را بازتولید کرد.
RNG - به دست آوردن اعداد به طور کامل از هر نویز است، توانایی محاسبه آن به صفر می‌رسد. در عین حال، RNG الگوریتم های خاصی برای تراز کردن توزیع دارد.

اختراع الگوریتم PRNG خودمان

مولد اعداد شبه تصادفی (PRNG) الگوریتمی است که دنباله ای از اعداد را تولید می کند که عناصر آن تقریباً مستقل از یکدیگر هستند و از توزیع معین (معمولاً یکنواخت) تبعیت می کنند.
می توانیم دنباله ای از اعداد را بگیریم و مدول عدد را از آنها بگیریم. ساده ترین مثالی که به ذهنم می رسد. ما باید به این فکر کنیم که چه دنباله ای بگیریم و ماژول از چه چیزی. اگر فقط مستقیماً از 0 به N و ماژول 2 برسد، یک مولد 1 و 0 دریافت می کنید:

تابع* rand() (const n = 100؛ const mod = 2؛ اجازه دهید i = 0؛ while (true) (بازده i% mod؛ اگر (i++ > n) i = 0؛ )) بگذارید i = 0. برای (بگذارید x از rand()) (اگر (i++ > 100) شکسته شود؛ console.log(x)؛ )
این تابع دنباله 01010101010101 را برای ما تولید می کند و حتی نمی توان آن را شبه تصادفی نامید. برای اینکه یک ژنراتور تصادفی باشد، باید تست بیت بعدی را بگذراند. اما ما چنین وظیفه ای نداریم. با این وجود، حتی بدون هیچ آزمایشی، می توانیم دنباله بعدی را پیش بینی کنیم، به این معنی که چنین الگوریتمی در پیشانی مناسب نیست، اما ما در مسیر درستی هستیم.

اما اگر دنباله ای شناخته شده، اما غیرخطی، به عنوان مثال، عدد PI را در نظر بگیریم، چه می شود. و به عنوان یک مقدار برای ماژول، ما نه 2، بلکه چیز دیگری را می گیریم. حتی می توانید به تغییر ارزش ماژول فکر کنید. دنباله ارقام در پی تصادفی در نظر گرفته می شود. ژنراتور می تواند با استفاده از پی کار کند و از نقطه ای ناشناخته شروع شود. نمونه ای از چنین الگوریتمی، با توالی مبتنی بر PI و تغییر مدول:

Const vector = [...Math.PI.toFixed(48).replace(.",""")]; تابع* rand() ( برای (بگذارید i=3؛ i<1000; i++) { if (i >99) i = 2; برای (بگذارید n=0؛ n اما در JS عدد PI فقط تا 48 کاراکتر قابل نمایش است و نه بیشتر. بنابراین، پیش‌بینی چنین دنباله‌ای همچنان آسان است و هر بار اجرای چنین ژنراتوری همیشه اعداد یکسانی را تولید می‌کند. اما ژنراتور ما قبلاً شروع به نشان دادن اعداد از 0 تا 9 کرده است.

ما یک مولد اعداد از 0 تا 9 دریافت کردیم، اما توزیع بسیار ناهموار است و هر بار همان دنباله را ایجاد می کند.

می‌توانیم نه عدد Pi، بلکه زمان را در نمایش عددی بگیریم و این عدد را دنباله‌ای از ارقام در نظر بگیریم و برای جلوگیری از تکرار هر بار دنباله، آن را از آخر می‌خوانیم. در مجموع، الگوریتم ما برای PRNG ما به این صورت خواهد بود:

تابع* rand() ( اجازه دهید newNumVector = () => [...(+تاریخ جدید)+""].reverse(); let vector = newNumVector(); let i=2; while (true) ( اگر (i++ > 99) i = 2؛ بگذارید n=-1؛ در حالی که (++n< vector.length) yield (vector[n] % i); vector = newNumVector(); } } // TEST: let i = 0; for (let x of rand()) { if (i++ >100) شکستن؛ console.log(x))
حالا شبیه یک تولید کننده اعداد شبه تصادفی است. و همان Math.random() -  یک PRNG است، کمی بعد در مورد آن صحبت خواهیم کرد. علاوه بر این، هر بار شماره اول متفاوت است.

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

PRNG همگرا خطی

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

Const a = 45; const c = 21; const m = 67; varseed = 2; const rand = () => seed = (a * seed + c) % m; برای (بگذارید i=0; i<30; i++) console.log(rand())
بسیاری از زبان های برنامه نویسی از LCPRNG استفاده می کنند (اما نه فقط از چنین الگوریتمی (!).

همانطور که در بالا ذکر شد، چنین توالی را می توان پیش بینی کرد. پس چرا به PRNG نیاز داریم؟ اگر در مورد امنیت صحبت کنیم، PRNG یک مشکل است. اگر در مورد وظایف دیگر صحبت کنیم، این ویژگی ها  -  می توانند یک مزیت داشته باشند. به عنوان مثال، برای جلوه‌های ویژه و انیمیشن‌های گرافیکی مختلف، ممکن است لازم باشد مرتباً به‌طور تصادفی تماس بگیرید. و در اینجا توزیع ارزش ها و عملکرد مهم است! الگوریتم های امنیتی نمی توانند به سرعت به خود ببالند.

خاصیت دیگر - تکرارپذیری. برخی از پیاده‌سازی‌ها به شما امکان می‌دهند یک seed را مشخص کنید، که اگر قرار باشد یک دنباله تکرار شود بسیار مفید است. برای مثال، تولید مثل در آزمایشات ضروری است. و بسیاری چیزهای دیگر وجود دارد که نیازی به RNG ایمن ندارند.

چگونه Math.random() کار می کند

متد Math.random() یک عدد ممیز شناور شبه تصادفی را از محدوده = crypto.getRandomValues(new Uint8Array(1)) برمی گرداند. گزارش کنسول (rvalue)
اما، بر خلاف PRNG Math.random()، این روش بسیار منابع فشرده است. واقعیت این است که این ژنراتور از فراخوانی های سیستم در سیستم عامل برای دسترسی به منابع آنتروپی (آدرس خشخاش، cpu، دما و غیره ...) استفاده می کند.