需要從乙個原始資料源(長度m,每個數不同)裡隨機出n個不同的數(n<=m)
1 vectorrand_num_src;2for (int i = 1; i <= 20; ++i)36
7int m = (int
)rand_num_src.size();
8int n = 10;
寫法一:
每隨機出乙個新的數,需要跟已經隨機出來的數作比較,來保證每個數不同。但是while(true)始終是個危險的寫法。
1 vectorindex_1;2for (int i = 0; i < n; ++i)
3
15}
16if (!sign)
1721
}22 }
寫法二:
用乙個新的vector記錄資料來源,隨機出乙個數,則把它從這個vector中去掉。下一次從這個新的vector中隨機,這樣同樣保證每個數不同。
1 vectorindex_2;2 vectorrandom_list;34
for (int i = 0; i < m; ++i)58
9for (int i = 0; i < n; ++i)
10
如何讓Fortran生成不同的隨機數
用fortran生成隨機數的方法很簡單,就是 call random seed call random number rd 生成隨機數組可以這樣 do k 1,10 call random seed call random number rd x k rd do something end do 但...
rand 產生隨機數 及其和clock 的不同
首先我們要對rand srand有個總體的看法 srand初始化隨機種子,rand產生隨機數。定義函式 int rand void 函式說明 因為rand的內部實現是用線性同餘法做的,他不是真的隨機數,只不過是因為其週期特別長,所以有一定的範圍裡可看成是隨機的,rand 會返回一隨機數值,範圍在0至...
如何得到多個不同的隨機數 洗牌演算法
先來思考乙個問題 有乙個大小為 100 的陣列,裡面的元素是從 1 到 100 按順序排列,怎樣隨機的從裡面選擇 1 個數?最簡單的方法是利用系統的方法math.random 100,這樣就可以拿到乙個 0 到 99 的隨機數,然後去陣列找對應的位置就即可。接下來在思考乙個問題 有乙個大小為100的...