生成前N個自然數隨機置換的3個程式

2022-06-15 18:00:13 字數 630 閱讀 1485

假設需要生成前n個自然數的乙個隨機置換。例如,和就是合法的置換,但卻不是,因為數1出現兩次而數3卻沒有。這個程式常常用於模擬一些演算法。我們假設存在乙個隨機數生成器randint(i,j),它以相同的概率生成i和j之間的乙個整數。

int randint(int i, int j)		//srand()放在主函式中了

填入從a[0]到a[n-1]的陣列a,為了填入a[i],生成隨機數直到它不同於已經生成的a[0],a[1],...,a[i-1]時,再將其填入a[i].

void fun1(int a, int n)

} a[i] = tmp;

}}

同演算法一,但要儲存乙個附加的陣列,稱之為used(用過的)陣列。當乙個隨機數ran最初被放入陣列a的時候,置used[ran]=1。

void fun2(int a, int n)

}

填寫該陣列使得a[i]=i+1.然後:

前N個自然數的隨機置換

來自 資料結構與演算法分析 c語言描述 練習2.7 問題描述 假設需要生成前n個自然數的乙個隨機置換。例如,和 就是合法的置換,但 卻不是,因為數1出現了兩次而數 3 缺沒有。這個程式常常用於模擬一些演算法。我們假設存在乙個隨機數生成器 randint i,j 它以相同的概率生成 i 和 j 之間的...

歸納策略 求前n個自然數的平方之和

求前n個自然數的平方之和 s 1 2 2 2 3 2 n 2 因為 1 2 2 2 3 2 n2 1 2 3 n 2n 1 3 又由於 1 2 3 n n n 1 2,因此得到 1 2 2 2 3 2 n 2 n n 1 2n 1 6 推導過程 有乙個三角形的數字矩陣 12 2 3 3 3 4 4 ...

1757找i個連續自然數累加為N

找i個連續自然數累加為n time limit 2 seconds memory limit 32768 k total submit 391 accepted 260 description 輸入乙個數字n,找出i個連續自然數累加為n的所有和式 i 1 input 整數n output n i個連...