演算法 生成n個互異隨機數的初步演算法

2021-07-30 19:49:18 字數 845 閱讀 4035

自己腦洞的隨機數生成演算法,且稱之為蘇氏演算法(su's algorithm)吧。o(*≧▽≦)ツ  

給定乙個隨機數生成範圍,在o(n^2logn)的時間複雜度中輸出n個互不相同的隨機數並按照公升(降)序排列。  

下方**的作用是:輸入隨機數生成範圍begin~end,輸出100個互異的隨機數。

比方說輸入1和100,那麼輸出的就是1一直到100的每個數。

#include#include#includeusing namespace std;

#define maxsize 100

int main()

;//initialize the array

cout << "input begin & end:(end-begin>=99)" << endl << ">>:";

cin >> begin >> end;

for (i = 0; i != maxsize; i++)

temp[i] = rand() % (end - begin + 1) + begin;

/*label:

sort(temp, temp + maxsize);

for(i = 1; i != maxsize; i++)

}//these can be used to alter the following for(…) instructions*/

for (i = 1; i != maxsize; i++)

} for (i = 0; i != maxsize; i++)

cout << temp[i] << endl;

return 0;

}

PHP生成N個不重複的隨機數

原理就是將陣列順序隨即打亂 然取該陣列中的某一段 方法1 range 是將1到100 列成乙個陣列 numbers range 1,100 shuffle 將陣列順序隨即打亂 shuffle numbers array slice 取該陣列中的某一段 result array slice numbe...

PHP 生成N個不重複的隨機數

起因 有25幅作品拿去投票,一次投票需要選16幅,單個作品一次投票只能選擇一次。前面有個程式設計師捅了漏子,忘了把投票入庫,有200個使用者產生的投票序列為空。那麼你會如何填補這個漏子?當然向上級反映情況。但是我們這裡討論的是技術,就是需要生成1 25之間的16個不重複的隨機數,去填補。具體怎麼設計...

隨機數生成演算法

看到一些介紹隨機數生成演算法的文章,收集下來,有空深入了解下。c語言中偽隨機數生成演算法實際上是採用了 線性同餘法 具體的計算如下 xi xi 1 a c mod m 其中a,c,m都是常數 一般會取質數 當c 0時,叫做乘同餘法。srand 函式置的seed實際上會作為x0被代入上式中,然後每次呼...