題目:
已經提供乙個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 錯誤的...