1. 程式人生 > 實用技巧 >c++ 隨機數 取值範圍 多執行緒

c++ 隨機數 取值範圍 多執行緒

#include <random>  

std::random_device rd;                         // A function object for generating seeds
  std::mt19937 gen(rd());
  std::uniform_int_distribution<> dis(1, 6000);//取值 1-6000

使用:
dis(gen)

執行緒延遲隨機多少秒內啟動:

#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include 
<string.h> #include <thread> #include <random> using namespace std; using std::cout; class HelloWorld { public: HelloWorld(string url) { std::random_device rd; // A function object for generating seeds std::mt19937 gen(rd()); std::uniform_int_distribution
<> dis(1, 6000);// const int len = 100; std::thread threads[len]; std::cout << "Spawning 5 threads...\n"; for (int i = 0; i < len; i++) { threads[i] = std::thread(&HelloWorld::thread_task, this, url, dis(gen)); } std::cout << "
Done spawning threads! Now wait for them to join\n"; for (auto& t : threads) { t.join(); } std::cout << "All threads joined.\n"; } void thread_task(string url, int time) { std::this_thread::sleep_for(std::chrono::milliseconds(time)); std::cout << "hello thread " << std::this_thread::get_id() << " paused " << time << " milliseconds" << std::endl; } }; int main() { HelloWorld hw("url"); return EXIT_SUCCESS; }