C++ TR1: как использовать normal_distribution?

Я слишком люблю <?=$whatever?>, чтобы позволить ему пойти. Никогда не имел проблему с ним. Я буду ожидать, пока это не укусит меня в заднице. Во всей серьезности у 85% (моих) клиентов есть доступ к php.ini в редкий случай, они выключены. Другие 15%-е основные поставщики услуг хостинга использования, и фактически всем им включили их. Я люблю их.

9
задан icedwater 8 April 2013 в 08:40
поделиться

3 ответа

Это точно не повесит программу. Но не уверен, действительно ли это соответствует вашим потребностям.

 #include <random>
 #include <iostream>

 using namespace std;

 typedef std::tr1::ranlux64_base_01 Myeng; 

 typedef std::tr1::normal_distribution<double> Mydist; 

 int main() 
 { 
      Myeng eng; 
      eng.seed(1000);
      Mydist dist(1,10); 

      dist.reset(); // discard any cached values 
      for (int i = 0; i < 10; i++)
      {
           std::cout << "a random value == " << (int)dist(eng) << std::endl; 
      }

 return (0); 
 }
3
ответ дан 4 December 2019 в 15:24
поделиться

Хотя это кажется ошибкой, быстрое подтверждение может заключаться в передаче параметров по умолчанию 0.0, 1.0. normal_distribution :: normal_distribution () должен равняться normal_distribution :: normal_distribution (0.0, 1.0)

1
ответ дан 4 December 2019 в 15:24
поделиться

Если ваша реализация генерации случайных чисел TR1 содержит ошибки, вы можете избежать TR1, написав свой собственный обычный генератор следующим образом.

Сгенерируйте две однородные (0, 1) случайные выборки u и v, используя любой случайный генератор, которому вы доверяете. Затем пусть r = sqrt (-2 log (u)) и вернет x = r sin (2 pi v). (Это называется методом Бокса-Мюллера.)

Если вам нужны нормальные образцы образцов со средним значением mu и сигмой стандартного отклонения, верните sigma * x + mu вместо просто x.

2
ответ дан 4 December 2019 в 15:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: