c語言如何生成隨機不重複的幾個數?

時間 2021-06-14 03:10:30

1樓:涇渭漳淮

如果你只是想獲得幾個或者幾十個隨機數,那最簡單的辦法就OK,拿個陣列把每次產生的隨機數存一下,然後產生新的隨機數之後查詢一下看看是不是重複了就行。

如果你想獲得幾k甚至幾兆的隨機數,那查詢就變成了瓶頸,你需要換乙個查詢的方法,紅黑樹字典樹之類的都可以。

如果你想獲得幾百兆甚至幾G個不重複的隨機數,那這時候瓶頸就不是查詢了,而是你根本沒有空間把之前已產生的隨機數存下來,這時候你可以考慮用布隆過濾器之類的來判斷是否重複,這時候其實就已經不是真隨機了。

如果你想要的更多,比如2^32個以上的數,那隨機數基本上不可能了,只能做到看上去隨機,你可以考慮加密演算法,也就是順序的產生資料,然後把這些資料加密之後輸出。

總之,如果不加限制「生成隨機不重複的數」是乙個不怎麼簡單的事情。

但是如果你只是想要得到7個不重複的數,你愛咋滴咋滴吧。

2樓:星辰

c語言的話一般使用rand()函式

原型int rand(void);

#include

//包含time、srand、rand函式的庫#include

intmain();

srand

(time

(NULL

));//讓數變得隨機

for(

inti=0

;i<7;

i++)//迴圈7次}

C語言入門初學者最常問的幾個問題

親愛的小芳 防曬新歡!又好看又便宜又輕便!焦下摺疊墨鏡,VVC帽子!十級防曬愛好者,因為太容易曬黑了!一曬就黑!1 焦下摺疊墨鏡 抵擋100 紫外線 UV400 防曬墨鏡超級重要!眼周肌膚超級脆弱!2 VVC防曬帽 抵擋99 紫外線 UPF50 是看張柏芝的代言去買了兩個 結果紫色大頭星人是風一吹就...

如何用Excel生成乙個不帶0的隨機數?

胡國華 用4個就沒有0了 RANDBETWEEN 1,9 RANDBETWEEN 1,9 RANDBETWEEN 1,9 RANDBETWEEN 1,9 或者把0給替換掉 SUBSTITUTE RANDBETWEEN 1111,9999 0,RANDBETWEEN 1,9 wdzerg 可以考慮先在...

如何高效的學習C語言?

高手課 C語言是乙個很古老的語言,新手學習C語言,要具備一定的技巧,這樣才能夠達到事半功倍的效果。下面我們就來談談怎麼學習C語言?高手課 這裡介紹幾個學習C語言必備的東東 乙個開發環境 例如turbo C 2.0,這個曾經佔據了DOS時代開發程式的大半個江山。但是現在windows時代,用turbo...