linha ldouble random_ldouble (baixo ldouble = 0,0, alta ldouble = 1,0) { std :: uniform_real_distribution <ldouble> distribuição (baixo, alto); std :: mt19937 gerador; std estática :: função <ldouble ()> fdouble = std :: bind (distribuição, gerador); regresso fdouble (); } Em linha inteiro random_integer (inteiro baixo = 0, = número inteiro alta std :: numeric_limits <inteiro> :: max ()) { std :: uniform_int_distribution <inteiro> distribuição (baixa, alta); std :: mt19937 gerador; std estática :: função <inteiro ()> finteger = std :: bind (distribuição, gerador); regresso finteger (); }
Para alcançar conveniente após o transplante, e para alcançar x64 e x86 compilador não ser dada, você deve primeiro definir alguns tipos comuns.
Você precisa incluir o arquivo de cabeçalho
#include <iostream> #include <fstream> #include <sstream> #include <string> #include <algorithm> #include <iterator> #include <CCTYPE> #include <vector> #include <iomanip> #include <functional> #include <random> #include <cmath> #include <cassert>
tipo genérico, bem como alguns macros úteis
typedef caractere int8; //兼容char, int8_t, assinado carvão typedef uint8_t u_int8; typedef int16_t int16; typedef uint16_t u_int16; typedef int32_t int32; typedef uint32_t u_int32; typedef int64_t int64; typedef uint64_t u_int64; typedef long double ldouble; #define MAKEINT16 (x, y) ((u_int16) (((u_int8) (((u_int32) (x)) & 0xff)) | ((u_int16) ((u_int8) (((u_int32) (y)) & 0xff ))) << 8)) #define MAKEINT32 (x, y) ((u_int32) (((u_int16) (((u_int32) (x)) & 0xffff)) | ((u_int32) ((u_int16) ((( u_int32) (y)) & 0xffff))) << 16)) #define MAKEINT64 (x, y) ((u_int64) (((u_int32) (((u_int64) (x)) & 0xffffffff)) | ((u_int64 ) ((u_int32) (((u_int64) (y)) & 0xffffffff))) << 32)) #define LOWINT16 (l) ((u_int8) (((u_int16) (l)) & 0xFF)) #define HIGHINT16 (l) ((u_int8) ( (((u_int16) (l)) >> 8) & #define HIGHINT32 (l) ((u_int16) ((((u_int32) (l)) >> 16) & 0xffff) ) #define LOWINT64 (l) ((u_int32) (((u_int64) (l)) & 0xffffffff)) #define HIGHINT64 (l) ((u_int32) ((((u_int64) (l)) >> 32) & 0xffffffff )) #define radiano (graus) ((M_PI / 180) * °) graus #define (rad) ((180 / M_PI) * rad) #ifdef _WIN64 typedef assinado __int64 número inteiro; typedef unsigned __int64 u_integer; #define MAKEINT (x, y) MAKEINT64 (x, y) HIGHINT #define (l) HIGHINT64 (L) #define LOWINT (l) LOWINT64 (l) #else typedef assinado __int32 número inteiro; typedef unsigned __int32 u_integer; #define MAKEINT (x, y) MAKEINT32 (x, y) #define HIGHINT (l) HIGHINT32 (L) #define LOWINT ( l) LOWINT32 (l) #endif linha ldouble max (ldouble um, ldouble b) { retornar a> b? a: b; } Min linha ldouble (ldouble um, ldouble b) { return um <b? a: b; }
Dois freqüentemente usado função aleatória, não uma pseudo-aleatório, mas com novos recursos dentro do c ++ função verdadeiramente aleatório
linha ldouble random_ldouble (baixo ldouble = 0,0, alta ldouble = 1,0) { std :: uniform_real_distribution <ldouble> distribuição (baixo, alto); std :: mt19937 gerador; std estática :: função <ldouble ()> fdouble = std :: bind (distribuição, gerador); regresso fdouble (); } Em linha inteiro random_integer (inteiro baixo = 0, = número inteiro alta std :: numeric_limits <inteiro> :: max ()) { std :: uniform_int_distribution <inteiro> distribuição (baixa, alta); std :: mt19937 gerador; std estática :: função <inteiro ()> finteger = std :: bind (distribuição, gerador); regresso finteger (); }
Eu nomeei este arquivo types.h, para facilitar programas de 32 bits e 64 bits de uso geral futuro gravação. E eu coloquei o código de chave em um interior full-lib (ao criar um novo projeto, selecione um lib estática na linha), fácil de chamar outros itens. Os resultados, como mostrado