當前位置:成語大全網 - 書法字典 - Vb詞典循環鍵

Vb詞典循環鍵

VBA編程實現不重復隨機數輸出。VBA中的隨機函數是RND,工作表中的隨機函數是蘭德。記住區別這個詞。RND的範圍是【0,1】,這表示0到1之間的隨機數,包括0,但不包括1。

1,用法

語法:Rnd【(數字)】

如果number的值由Randomize生成。

小於0時,每次使用number作為隨機數種子都會得到相同的結果。

如果它大於0,則前壹個隨機數將用作生成下壹個隨機數的種子。

等於0,產生與最近生成的隨機數相同的隨機數。

省略,則使用前壹個隨機數作為種子來生成下壹個隨機數(同樣大於0)。

描述:

Rnd函數返回壹個小於1但大於或等於0的值。

值$ number決定了Rnd如何生成隨機數。

將為初始給定種子生成相同的序列,因為每次調用Rnd函數時,序列中的前壹個數字都將用作下壹個數字的種子。

在調用Rnd之前,隨機數生成器使用不帶參數的隨機語句進行初始化(如果有參數,將生成與參數對應的特定隨機數序列),生成器具有根據系統計時器獲得的種子。如果不使用Randomize語句,每次執行程序時生成的隨機數序列是相同的。

當Rnd後跟壹個負數時,可以從同壹個參數中獲得兩個相同的序列。例如,rnd -1執行後,rnd取1000個隨機數,然後執行rnd -1,然後rnd取1000個隨機數,與上壹個相同。為了得到不同的序列,您可以使用不同的負數,或者您可以在rnd -1之後執行隨機化編號。請註意,要獲得相同的序列,隨機化兩次後的數字必須相同。這種方法的用途之壹是加密和解密。

要生成壹系列隨機整數,可以使用以下公式:

Int((上限-下限+1)* Rnd+下限)

這裏,upperbound是隨機數範圍的上限,lowerbound是隨機數範圍的下限。

註意:如果您想獲得重復的隨機數序列,請在使用帶有數字參數的Randomize之前直接使用負參數值調用Rnd。使用相同數值的Randomize不會得到重復的隨機數序列。

2、非重復隨機數算法1

這是最簡單的算法。每次生成隨機數時,都會與現有的隨機數進行比較,如果已經存在,則會重新生成。它更適合從大範圍中提取壹小部分數據,例如,從題庫中提取試題。

【vb】?查看平原?復制?打印?

生成20個介於1和100之間的不重復隨機數。

公共的?Sub?rndnumbernorepapet 1()

暗淡?RndNumber,temp(20),I,k,Maxrec作為什麽?整數

隨機化(定時器)?初始化隨機數生成器。

Maxrec = 100

從A21輸出隨機數。

k = 0

做什麽?什麽時候?k & lt20

Rnd number = Int(Maxrec * Rnd)+1

溫度(k)= rnd編號

單元格(k + 21,1)= rnd number

為了什麽?i = 0?去哪?k - 1

如果?temp(I)= rnd number?然後呢?退出?為

下壹個?我

如果?i = k?然後呢?k = i + 1

“MsgBox”隨機數:“&;rnd編號

結束?潛水艇

3.不重復隨機數算法2

這個算法很巧妙,需要仔細理解才能知道真正的含義。該算法不會重復生成隨機數,但它需要壹個占位符數組。它更適合輸出範圍內的所有值,例如隨機發牌。

【vb】?查看平原?復制?打印?

生成20個介於1和100之間的不重復隨機數。

Sub?RndNumberNoRepeat2()

暗淡?RndNumber,TempArray(99),I?作為什麽?整數

隨機化(定時器)?初始化隨機數生成器。

為了什麽?i = 0?去哪?99?生成壹個包含1-100的不重復隨機序列。

TempArray(I)= I

下壹個?我

為了什麽?i = 99?去哪?80?邁步?-1

Rnd number = Int(I * Rnd)

從A21輸出這些數字。

單元格(120 - i,1)=臨時數組(rnd number)+1

臨時數組(rnd number)=臨時數組(I)

下壹個?我

結束?潛水艇

4、非重復隨機數算法3

這種算法使用字典對象來完成復制,這與第壹種算法類似,但程序看起來更簡單,嗯,至少是新穎的。

【vb】?查看平原?復制?打印?

生成20個介於1和100之間的不重復隨機數。

Sub?RndNumberNoRepeat3()

暗淡?d?作為什麽?對象?新詞典

暗淡?s?作為什麽?整數

隨機化(定時器)?初始化隨機數生成器。

設置?d = CreateObject(“腳本。詞典》)

做什麽?直到?d .計數= 20

s = Int(Rnd * 100+1)

d(s)=?""

【a21】。調整大小(d.Count,1)=應用程序。移調(調)

結束?潛水艇

附件:VBA詞典對象使用情況概要

昏暗的字典

創建詞典

Set dict = CreateObject(“腳本。詞典》)

添加項目

迪克特。加“A”,300

迪克特。加“B”,400

迪克特。加“C”,500

清點物品的數量

n =字典。數數

刪除項目

迪克特。移除(“A”)

確定詞典是否包含關鍵字。

字典存在(“B”)

取關鍵字對應的值,使用前註意是否有key,否則dict中會多壹條記錄。

值=字典。項目(“B”)

修改與關鍵字對應的值,如果不存在新項目,則創建壹個新項目。

迪克特。item(“B“)= 1000

迪克特。item(“D“)= 800

循環查閱字典。

k =字典鍵

v =字典。項目

對於i = 0來說。計數- 1

key = k(I)

值= v(I)

MsgBox密鑰和密碼。價值

然後

刪除所有項目

迪克特。全部刪除

示例:

子宏1()

set DIC = createobject(“scripting。字典)‘字典

對於i = 1至10000

如果不是,我喜歡“*4*”然後

Dic。如果不包含“1”,則添加I

如果…就會結束

然後

範圍(“A2”)。調整大小(DIC。Count,1)=應用程序。工作表函數。轉置(DIC。按鍵)從A2單元開始並放下。

末端接頭

=========================================================================

下面給出了使用Tranpose工作表函數的另壹個示例。

將壹行多列的二維數組轉換為壹維數組。

子測試()

昏暗的arr,arrt

arr = Range(“a 1:j 1“)

arrt =工作表功能。轉置(工作表功能。轉置(排列)

停止

末端接頭

首先看看轉置函數的基本用法。官方幫助顯示,轉置函數可以返回轉置後的單元格區域,即將行單元格區域轉置為列單元格區域,反之亦然。

TRANSPOSE函數的語法是:TRANSPOSE(array)

Array參數是工作表上需要轉置的數組或單元格區域。所謂數組換位是指數組的第壹行是新數組的第壹列,數組的第二行是新數組的第二列,以此類推。