演算法練習 隨機數(2)

2022-01-29 12:27:32 字數 694 閱讀 8815

續之前寫過的隨機數。之前n和k要相隔不大的情況下會產生碰撞,導致程式鎖死。

看了程式設計珠璣的課後的答案,改進了一下。

具體思路是定義乙個陣列,並遞增賦值。

再設定隨機數種子,產生隨機數。

並不是直接放入陣列中。而是將產生的隨機數作為下標即a[i + rand() % (n - i)]與a[i]交換位置。

我自己做了乙個測試。

程式**如下。

#include

#include

#include

#include

#include

#include

using namespace std;

int n = 99999;

int k = 80000;

#define max 100000

void swap(int *a, int *b)

void produce(int *a, int n)

srand((int)time(0));

//下面的語句用於產生n個不同的隨機數,存於陣列的0到n-1位中

// i + rand() % (n - i)產生乙個範圍i到n的隨機數

//那麼將這個下標的陣列資料和以i為下標的陣列資料swap肯定不重複

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

}int main()

隨機數練習

構造乙個大小為 100 共 100 個數 的隨機 0 1 序列,也就是乙個只含 0 1 的陣列,要求 0 出現的概率為 1 3,1 出現的概率為 2 3,然後將該序列繪製出來,並列印出該序列中 0 的個數與 1 的個數。定義從均勻分布中獲取隨機數的函式 defget uniform random n...

Python練習2 隨機數產生

或者優惠券 使用 python 如何生成 200 個啟用碼 或者優惠券 這道題主要用來熟悉python的隨機函式,用到了random模組,大家可以參考python中的random模組 至於做題中遇到的坑,原始檔在命名的時候用了random,導致使用random模組的函式時一直執行錯誤,python中...

Python練習2 隨機數產生

或者優惠券 使用 python 如何生成 200 個啟用碼 或者優惠券 這道題主要用來熟悉python的隨機函式,用到了random模組,大家可以參考python中的random模組 至於做題中遇到的坑,原始檔在命名的時候用了random,導致使用random模組的函式時一直執行錯誤,python中...