:Belirli bir rastgele dağılım ile kullanılacak rasgele sayı motoru nedir?
- rastgele bir sayı motoru
- örneğini dağıtım yoluyla rasgele dağıtım
- itme motoru rasgele sayılar örneğini
Sorun, rastgele sayı motorunun ve rastgele dağıtımı öğesinin türüne göre tempoldediğidir. kullandığınız hmetic.
Bu iki tür aritmetiğin nasıl olması gerekir?
Eğer dağıtım ve zıt için motoru için 32 bitlik tamsayı ve 64 bit tamsayı kullanabilir miyim? Tehlikeler nelerdir? Kayan nokta türleri nedir?
Bir motor tarafından üretilen olası sayıların, almayı umulan farklı rastgele sayıların sayısından daha büyük veya eşit olması gerektiğine dair bir kılavuz varsayım. Ne yazık ki, hipotezimi test edemedim, çünkü bilgisayarımda uint_fast32_t
ve uint_fast64_t
aynı ve dolayısıyla her iki C++ 11 jeneratörünün her biri için önerilen motorlar aynı sonuçları veriyor.
std::uniform_real_distribution veya std::uniform_int_distribution gibi C++ 11 dağıtımlarında belgeler bu konuda eksik:
Bu bölüm eksiktir. Sebep: Generator
tarihinde Ama uniform_real_distribution
ait exapmple gcc 4.7
uygulanması için şartlar geçerli:
template<typename _UniformRandomNumberGenerator>
result_type
operator()(_UniformRandomNumberGenerator& __urng,
const param_type& __p)
{
__detail::_Adaptor<_UniformRandomNumberGenerator, result_type>
__aurng(__urng);
return (__aurng() * (__p.b() - __p.a())) + __p.a();
}
Adaptör olduğunda:
herhangi çıktısını dönüştürmek için bir adaptör sınıfı Jeneratör, belirli bir Dağıtımın girdisine girer.
"herhangi bir" güven verici geliyor, ama standarttır? Özellikle, algılanması zor olan ve dağıtımın doğruluğunu tehlikeye atabilecek gizli taşmalar konusunda endişeliyim.
Gereksinimler http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf adresinde bulunabilir (sayfa 904 sonrası). Bir cevap bulamadım ama belki yapabilirsin? – Escualo