C 生成不重複的隨機數

2021-06-19 22:04:36 字數 372 閱讀 3367

在做洗牌演算法的時候用到了隨機數,並且產生的隨機數中不能有重複的元素,因為是用c語言實現的,就把值賦給陣列,然後用隨機數產生陣列的下標,每產生乙個就刪除對應的元素,然後隨機數的生成範圍減一,但是這樣做每次都要迴圈去移動陣列元素,從時間複雜度上來說這樣並不好。於是,後來用c++重新實現:實現的思路並沒有變,只是把陣列換成了容器,因為stl有刪除元素的操作,所以就減少了迴圈的使用

vectorgetrandom(int total)

vectoroutput = *new vector();

int end = total;

for (int i = 0; i < total; i++)

return output;

}

不重複隨機數生成

直接上 生成 0,total 的隨機數 最大隨機數 ilist private static ilistgetrandomsequence int total random random new random for var i listbase.count 1 i 0 i return listo...

C 生成不重複的隨機數

private string rndomstr int codelength string code int temp 1 記錄上次隨機數值,盡量避避免生產幾個一樣的隨機數 random rand new random 採用乙個簡單的演算法以保證生成隨機數的不同 for int i 1 i code...

生成不重複的隨機數

思想是用乙個陣列來儲存索引號,先隨機生成乙個陣列位置,然後把這個位置的索引號取出來,並把最後乙個索引號複製到當前的陣列位置,然後使隨機 數的上限減一,具體如 先把這100個數放在乙個陣列內,每次隨機取乙個位置 第一次是1 100,第二次是1 99,將該位置的數用最後的數 代替。int index n...