#include "MainScene.h" #include "SimpleAudioEngine.h" #include <iostream> #include <string.h> using namespace std; #include "opencv.hpp" #include <opencv2/features2d.hpp> #include "opencv2/highgui.hpp" using namespace cv; extern "C" { #include "SDL.h" #include <libavutil/imgutils.h> #include <libavutil/parseutils.h> #include <libswscale/swscale.h> #include <libavcodec/avcodec.h> #include <libavformat/avformat.h> #include <libavformat/avio.h> #include <libavutil/file.h> #include <libavdevice/avdevice.h> } #include <boost/random.hpp> #include <boost/random/random_device.hpp> Scene* MainScene::createScene() { return MainScene::create(); } bool MainScene::init() { if ( !Scene::init() ) { return false; } visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); //string filename = "I:/ImageGrid/135708z4u8eha6gucne2ug.jpg"; //string filename = "D:/PriPro/Pro/simulator/win32/src/client/res/log/Log_1.png"; string filename = "H:/libcocos2d-x/res/201212211612386.jpg"; auto s = Sprite::create("201212211612386.jpg"); s->setScale(0.5); s->setPosition3D(Vec3(400, 300, -300)); this->addChild(s); //1、随机数发生器:boost::random::mt19937,生成伪随机数 //产生随机数类型:boost::uint32_t { std::time_t now = std::time(0); boost::random::mt19937 gen(now); //输出最大值和最小值 //std::cout << boost::random::mt19937::min() << ":" << boost::random::mt19937::max() << std::endl; //产生5个随机数, for (int i = 0; i < 5; ++i) { std::cout << gen() << "-"; } //std::cout << std::endl; //产生5个随机数,并填充容器 std::vector<int> vec(5); gen.generate(vec.begin(), vec.end()); for (auto& i : vec) { std::cout << " 随机数发生器:boost::random::mt19937,生成伪随机数 "<< i << "-"; } std::cout << std::endl; } //2、随机数发生器 + 随机数分布器: //实现的是符合某个特定的区域或符合某种分布的随机数 { //伯努利分布:在0/1中随机产生一个数,就像抛硬币,不是0,就是1,但是是随机的。 //定义一个随机数生成器 boost::random::mt19937 gen(time(0)); //定义一个随机数分布器 boost::random::bernoulli_distribution<> dist; //测试产生随机数 for (int i = 0; i < 10; ++i) { std::cout <<"随机数发生器 + 随机数分布器: "<< dist(gen) << std::endl; } } { //产生某个整数域范围内的随机数,比如产生0~100之间的随机数 //定义一个随机数生成器 boost::random::mt19937 gen(time(0)); boost::random::uniform_int_distribution<> dist(0, 100); //测试产生随机数 for (int i = 0; i < 10; ++i) { std::cout << "产生某个整数域范围内的随机数 "<<dist(gen) << std::endl; } } { //产生0~1之间的小数 //定义一个随机数生成器 boost::random::mt19937 gen(time(0)); boost::random::uniform_01<> dist; //测试产生随机数 for (int i = 0; i < 10; ++i) { std::cout << "产生0~1之间的小数 "<<dist(gen) << std::endl; } } { //小整数域上的均匀分布 boost::random::mt19937 gen(time(0)); boost::random::uniform_smallint<> dist(1, 100); //测试产生随机数 for (int i = 0; i < 10; ++i) { std::cout <<"小整数域上的均匀分布 "<< dist(gen) << std::endl; } } { //实现了任意区间的实数分布随机数,类型是double类型 boost::random::mt19937 gen(time(0)); boost::random::uniform_real_distribution<> dist(1.0, 100.0); //测试产生随机数 for (int i = 0; i < 10; ++i) { std::cout << " 任意区间的实数分布随机数 "<<dist(gen) << std::endl; } } //3.变量发生器,作用:只是为了方便使用 //是随机数发生器和分布器的组合,示例: { //定义一个随机数发生器 boost::random::mt19937 mt(time(0)); //定义一个随机数分布器 boost::random::uniform_smallint<> us(1, 100); //定义一个变量发生器,注意:参数2分布器的参数形式不能是指针或是引用! boost::random::variate_generator<boost::random::mt19937&, boost::random::uniform_smallint<> > gen(mt, us); //测试生成10随机数 for (int i = 0; i < 10; ++i) { std::cout << "变量发生器,作用:只是为了方便使用 "<<gen() << std::endl; } } //4、随机数生成器:random_device,真随机数 { //最大最小值: std::cout << boost::random::random_device::min() << ":" << boost::random::random_device::max() << std::endl; boost::random::random_device gen; for (int i = 0; i < 20; ++i) { std::cout <<"随机数生成器:random_device,真随机数 "<< gen() << std::endl; } } return true; }
结果
H:libcocos2d-xuildDebug>libcocos.exe
Ready for GLSL
Ready for OpenGL 2.0
{
gl.version: 4.6.13559 Compatibility Profile Context 26.20.12028.2
gl.supports_NPOT: true
cocos2d.x.version: cocos2d-x-3.17.2
cocos2d.x.compiled_with_profiler: false
cocos2d.x.build_type: DEBUG
cocos2d.x.compiled_with_gl_state_cache: true
gl.max_texture_size: 16384
gl.supports_OES_packed_depth_stencil: false
gl.vendor: ATI Technologies Inc.
gl.renderer: AMD Radeon RX 580 2048SP
gl.max_texture_units: 160
gl.supports_ETC1: false
gl.supports_S3TC: true
gl.supports_ATITC: false
gl.supports_PVRTC: false
gl.supports_BGRA8888: false
gl.supports_discard_framebuffer: false
gl.supports_vertex_array_object: true
gl.supports_OES_map_buffer: false
gl.supports_OES_depth24: false
}
536369200-340623271-4276119838-1931111883-4078776906- 随机数发生器:boost::random::mt19937,生成伪随机数 1938412408- 随机数发生器:boost::random::mt19937,生成伪随机数 919002582- 随机数发生器:boost::random::mt19937,生成伪随机数 -404798720- 随机数发生器:boost::random::mt19937,生成伪随机数 -277944272- 随机数发生器:boost::random::mt19937,生成伪随机数 -328668786-
随机数发生器 + 随机数分布器: 1
随机数发生器 + 随机数分布器: 1
随机数发生器 + 随机数分布器: 0
随机数发生器 + 随机数分布器: 1
随机数发生器 + 随机数分布器: 0
随机数发生器 + 随机数分布器: 1
随机数发生器 + 随机数分布器: 1
随机数发生器 + 随机数分布器: 0
随机数发生器 + 随机数分布器: 0
随机数发生器 + 随机数分布器: 0
产生某个整数域范围内的随机数 12
产生某个整数域范围内的随机数 8
产生某个整数域范围内的随机数 100
产生某个整数域范围内的随机数 45
产生某个整数域范围内的随机数 95
产生某个整数域范围内的随机数 45
产生某个整数域范围内的随机数 21
产生某个整数域范围内的随机数 91
产生某个整数域范围内的随机数 94
产生某个整数域范围内的随机数 93
产生0~1之间的小数 0.124883
产生0~1之间的小数 0.0793075
产生0~1之间的小数 0.995612
产生0~1之间的小数 0.449622
产生0~1之间的小数 0.949664
产生0~1之间的小数 0.451322
产生0~1之间的小数 0.213972
产生0~1之间的小数 0.90575
产生0~1之间的小数 0.935286
产生0~1之间的小数 0.923476
小整数域上的均匀分布 1
小整数域上的均匀分布 72
小整数域上的均匀分布 39
小整数域上的均匀分布 84
小整数域上的均匀分布 7
小整数域上的均匀分布 9
小整数域上的均匀分布 83
小整数域上的均匀分布 77
小整数域上的均匀分布 25
小整数域上的均匀分布 11
任意区间的实数分布随机数 13.3634
任意区间的实数分布随机数 8.85145
任意区间的实数分布随机数 99.5656
任意区间的实数分布随机数 45.5126
任意区间的实数分布随机数 95.0168
任意区间的实数分布随机数 45.6809
任意区间的实数分布随机数 22.1832
任意区间的实数分布随机数 90.6693
任意区间的实数分布随机数 93.5933
任意区间的实数分布随机数 92.4241
变量发生器,作用:只是为了方便使用 1
变量发生器,作用:只是为了方便使用 72
变量发生器,作用:只是为了方便使用 39
变量发生器,作用:只是为了方便使用 84
变量发生器,作用:只是为了方便使用 7
变量发生器,作用:只是为了方便使用 9
变量发生器,作用:只是为了方便使用 83
变量发生器,作用:只是为了方便使用 77
变量发生器,作用:只是为了方便使用 25
变量发生器,作用:只是为了方便使用 11
0:4294967295
随机数生成器:random_device,真随机数 3184181887
随机数生成器:random_device,真随机数 1839758307
随机数生成器:random_device,真随机数 930484113
随机数生成器:random_device,真随机数 2087181485
随机数生成器:random_device,真随机数 901289463
随机数生成器:random_device,真随机数 2204950096
随机数生成器:random_device,真随机数 1487585537
随机数生成器:random_device,真随机数 1386460697
随机数生成器:random_device,真随机数 2340326506
随机数生成器:random_device,真随机数 596825156
随机数生成器:random_device,真随机数 2696036027
随机数生成器:random_device,真随机数 380201607
随机数生成器:random_device,真随机数 3070663986
随机数生成器:random_device,真随机数 2850338511
随机数生成器:random_device,真随机数 1854585580
随机数生成器:random_device,真随机数 464957364
随机数生成器:random_device,真随机数 2378991457
随机数生成器:random_device,真随机数 3082276196
随机数生成器:random_device,真随机数 3170197326
随机数生成器:random_device,真随机数 646490642
cocos2d: QuadCommand: resizing index size from [-1] to [2560]