隨機序列產生演算法

2021-07-05 18:33:11 字數 1159 閱讀 2331

題目:

已經提供乙個int rand(int n)的隨機數生成函式用來生成[0, n)的隨機數,求編寫演算法生成1至n的隨機序列,要求該序列包含不重複的1~n數字。

**:

#include #include #include using namespace std;

// 首先,建立乙個長度為n的陣列array,初始值是0…n-1。

// 然後,生成乙個隨機數x1=random.next(0, n),則x1∈[0,n)。取num1=array[x1]作為序列中的第乙個成員。接下來是關鍵步驟:將num1和array[n-1]交換。

// 然後,生成下乙個隨機數x2= random.next(0, n-1),則x2∈[0,n-1)。由於num1已經被交換到了array[n-1],而x2

// 按照上述方法,可以得到序列中第

三、第四…第n個成員。最後得到的array就是乙個非重複的隨機序列。

// 產生乙個屬於[0, n) 的隨機數

int rand(int n)

// [1, n] 隨機序列生成演算法

void randseq(int n)

int rn = 0, temp = 0;

for (int i = n-1; i > 0; --i)

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

cout << endl;

}int main()

return 0;

}

變形:[low, high]隨機序列生成演算法

**:

#include #include #include using namespace std;

// 產生乙個屬於[0, n) 的隨機數

int rand(int n)

// [low, high] 隨機序列生成演算法

void randseq(int low, int high)

int rn = 0, temp = 0;

for (int i = n-1; i > 0; --i)

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

cout << endl;

}int main()

return 0;

}

Matlab產生隨機序列,並取樣

clear all m 10 bit數 符號數 n 100 總取樣數 l n m 每bit取樣數 emp rate 0.5 占空比 imp round rand 1,m round 四捨五入 rand m,n 產生 0,1 之間的均勻分布的隨機數,返回m n的矩陣 imp randi 0,1 1,m...

C 產生隨機數,隨機序列和隨機分布

1.產生 0 n 1 區間的乙個隨機整數 2.產生乙個 0 1 區間的隨機小數 3.產生乙個 0 n 1 區間的隨機序列 常用於ransac 4.產生服從某個分布的概率隨機數 1.產生 0 n 1 區間的乙個隨機整數 include include using namespace std intma...

隨機序列常用演算法

include include include include include include include using namespace std author marco date 2018 4 21 aim 序列隨機化的常用兩種演算法 1.什麼是隨機化的序列 得到該序列的概率是1 n 錯誤的...