快速生產一定數量的不重複的隨機數

2021-05-23 12:26:56 字數 932 閱讀 5281

在程式中,尤其在遊戲程式中我們都會經常性使用到隨機數。有時我們只需要生產1個在一定範圍內的隨機數。如a=int(rnd*100)  生成乙個0~99之間的隨機數。而有時我們會需要產生一批隨機數,比如我們做有關撲克牌的遊戲時,就需要將54張牌打亂然後分發出去。這就需要生產54個不重複的隨機數。而這時我們就會遇到怎樣防止重複的問題,如果用判斷程式的話,越到後面就要做越多的判斷,而且經常會需要生成很多次才會生成乙個不重複的數。當然,如果是54個數的話,即使多花時間了,我們也感覺不出來,但如果是10000個,甚至更多呢?下面介紹乙個比較高效的方法。

主要思想是引入乙個輔助陣列。比如我們要將0~99這100個數隨機的存入res(0)~res(99)這個陣列裡,那我們就先定義個輔助陣列temp(0)~temp(99),並使它依次等於0~99。而我們產生的隨機數是指這個陣列的下標而不是直接的數字。根據隨機產生的下標提取輔助陣列中的乙個單元,並同時把這個單元用輔助陣列的最後乙個單元填上。下次取隨機數的範圍也跟著減少乙個。如以下程式:

dim res(99) as integer  '結果存放陣列

dim temp(99) as integer  '輔助陣列

dim lentemp as integer   '輔助暫存器長度

dim i, a as integer

for i = 0 to 99         '輔助陣列依次存入0~99

temp(i) = i

next i

lentemp = 100

randomize

for i = 0 to 99

a = int(rnd * lentemp)

res(i) = temp(a)

temp(a) = temp(lentemp - 1)

lentemp = lentemp - 1

next i

以上程式是vb6.0的程式,當然方法同樣適合於別的語言。。

按照一定的格式生成一定數量的隨機數的例子

在很多時候需要按照一定的格式生成一定數量的隨機數,下面是實現方法 下面是自己寫的類 public class myrandom private string getonerandomnum string strformat case case default return strtemp publi...

原創 按照一定的格式生成一定數量的隨機數的例子

在很多時候需要按照一定的格式生成一定數量的隨機數,下面是實現方法 下面是自己寫的類 public class myrandom private string getonerandomnum string strformat case case default return strtemp publi...

C 檢測程序數量,開啟一定數量的程序 三

一下程式可以實現開啟3個程序,並且實時的監控程序數量,等到所有的程序都退出後,再重新建立3個程序。如此迴圈往復 include stdafx.h include include include include include psapi.h pragma comment lib,kernel32.l...