Definição do tipo genérico para portabilidade e 32-bit, compilador de 64 bits

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

 

Acho que você gosta

Origin www.cnblogs.com/dalgleish/p/12602709.html
Recomendado
Clasificación