دوستان گرامی با سلام
آیا C++ قابلیت تولید عدد تصادفی با توزیع توانی رو داره؟
اگر نه، راهی هست که بشه با استفاده از اعداد تصادفی تولید شده از توزیع های دیگه مثل یکنواخت، به حالت توانی رسید؟
با سپاس قبلی
دوستان گرامی با سلام
آیا C++ قابلیت تولید عدد تصادفی با توزیع توانی رو داره؟
اگر نه، راهی هست که بشه با استفاده از اعداد تصادفی تولید شده از توزیع های دیگه مثل یکنواخت، به حالت توانی رسید؟
با سپاس قبلی
شما باید توزیع خودتون رو روی بازه منظم اعداد تطبیق بدید.
برای مثال در سیستمهای رایگیری مزنی مثل بانکها کسی که شانس بیشتری برای انتخاب شدن (بواسطه عاملی مانند سپرده بیشتر) داره به تعداد شانس در یک آرایه درج کرده و شخص عادی رو یک بار درج میکنند. بدین ترتیب با تولید یک عدد تصادفی به بیشینه طول آرایه میتوان برنده خوش شانس را به دست آورد. در نتیجه شما همیشه روی بازه منظم سیر میکنید و عددی تصادفی از همین بازه را کسب میکنید اما میتوانید با فرمولهای خاص سناریوی خود آنها را بر نیازهای خود تطبیق دهید.
در مثال شما: (اگر درست متوجه شده باشم) کافیه یک عدد رندوم با بیشینه n^2-1 به دست آورده سپس آن را در رادیکال قرار دهید.
سلام
اگه می خواهید توزیع نمایی استفاده کنید جواب بله هست. توزیعهای دیگه هم در ++c وجود داره
#include <chrono>
#include <algorithm>
#include <iostream>
int main()
{
std::exponential_distribution<> distribution(1.0);
std::default_random_engine generator( std::chrono::system_clock::now( ).time_since_epoch( ).count());
for (int i = 0; i < 10; i++)
{
std::cout<< distribution(generator) <<std::endl;
}
}