最近在linux下用c++做實驗,需要在1到n之間多次均勻隨機選擇m個元素(m
1)定義大小為n的陣列,且陣列元素即為序號0,1,2,...,n-a。
2)對陣列進行shuffle操作,打亂陣列元素的順序。
3)取陣列的前m個樣本。
其中陣列的shuffle操作如下:
// shuffle algorithm example
#include // std::cout
#include // std::shuffle
#include // std::array
#include // std::default_random_engine
#include // std::chrono::system_clock
int main () ;
// obtain a time-based seed:
unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();
shuffle (foo.begin(), foo.end(), std::default_random_engine(seed));
std::cout << "shuffled elements:";
for (int& x: foo) std::cout << ' ' << x;
std::cout << '\n';
return 0;
}
陣列隨機shuffle方法
在python中我們會經常看到shuffle的隨機排列函式,其可以將列表中的內容進行隨機排列,但在c 中卻需要自己去實現這樣功能的函式 c 0x之前 在c 0x之後這樣的功能函式在標準庫中已有對應的提供 std shuffle。下面就對該函式做具體的介紹 template void shuffle ...
C 陣列 隨機 排序
int arrint new int 100 for int i 0 i 100 i arrint arrint.orderby c guid.newguid toarray foreach var item in arrint console.readkey 反編譯後 int arrint new...
c語言生成隨機數 組
int rand void 根據乙個數值按照某個公式推算出來的,這個數值稱之為 種子 隨機生成乙個位於 0 rand max 之間的整數。rand max它的值至少為 32767。種子在每次啟動計算機時是隨機的,但是一旦計算機啟動以後它就不再變化了,根據公式推算出來的結果 也就是生成的隨機數 就是固...