當前位置:編程學習大全網 - 編程軟體 - EXCEL如何隨機生成指定範圍的不重復的整數?

EXCEL如何隨機生成指定範圍的不重復的整數?

用VBA編程可以實現。其方法有多種,壹是字典功能,凡是重復的無法插入字典。其缺陷是程序運行的時間不確定,發生重復就繼續生成隨機數,直到沒有重復為止。另壹種是第壹次生成1~100的隨機數,將得到的隨機數取走;再生成1~99的隨機數,。。。這樣循環到1,就完成了題目要求。

我們采用第二種方法做成如下代碼:

Sub 隨機數()

Dim mYarr(1 To 100, 1 To 2)

Dim Tarr(1 To 100, 1 To 2) '存放隨機生成的數

Dim I, J, K, L As Integer

'讀取原始數據

I = 2

Do While Cells(I, 1) > 0

mYarr(I - 1, 1) = Cells(I, 1)

mYarr(I - 1, 2) = Cells(I, 2)

I = I + 1

Loop

I = I - 2

L = 1

For K = I To 1 Step -1

Randomize

J = Int((Rnd * K) + 1)

Tarr(L, 1) = L

Tarr(L, 2) = mYarr(J, 2)

'將數值自J+1個開始向上移動壹格

For M = J To I - 1

mYarr(M, 1) = mYarr(M + 1, 1)

mYarr(M, 2) = mYarr(M + 1, 2)

Next M

L = L + 1

Next K

'輸出隨機整數

For J = 1 To I

Cells(J + 1, 5) = Tarr(J, 1)

Cells(J + 1, 6) = Tarr(J, 2)

Next J

End Sub

該宏

第壹步:將第1、2列數據讀入MYARR數組

第二步:隨機生成隨機數,將該隨機數對應的數值移入TARR數組(目標數組)

第三步:將目標數組TARR數值輸出到第5、6列。運行結果如圖:

可以看到G列檢查是否有重復列,結果是沒有。

  • 上一篇:java如何實現:壹個壹直在運行的監聽程序,每當監聽到數據,就把數據發給jsp頁面
  • 下一篇:找出下面每組數的最大公因數
  • copyright 2024編程學習大全網