返回列表 上一主題 發帖

自己寫 自己的方式產生亂數

本帖最後由 c_c_lai 於 2013-10-26 12:23 編輯

回復 4# sunnyso
VBA Function Example

The RND function can only be used in VBA code in Microsoft Excel.
Here are some examples of what the RND function would return:
  1.     Int ((10 - 1 + 1) * Rnd + 1)     '   傳回介於 1 到 10 間的亂數值
  2.     Int ((200 - 100 + 1) * Rnd + 100)   '  傳回介於 100 到 200 間的亂數值
  3.     Int ((600 - 300 + 1) * Rnd + 300) '  傳回 介於 300 到 600 間的亂數值
複製代碼
For example:
  1. Sub Demo()
  2.     Dim retNum As Integer

  3.     retNum = Int ((300 - 200 + 1) * Rnd + 200)
  4.     MsgBox "retNum 的亂數值 = " & retNum
  5. End Sub
複製代碼
In this example, the variable called retNum would now contain a random number between 200 and 300.

TOP

回復 14# stillfish00
這是我測試的結果:
A.  rng = myRnd(sngVal)

B.  rng = myRnd(sngVal, 2 ^ 32)

略加增修部分:
  1. Option Explicit

  2. Sub Ex()
  3.     Dim sngVal As Single, rng As Range, xi As Long
  4.    
  5.     With Sheets(1)
  6.         .Cells.Clear
  7.         
  8.         For xi = 1 To 5
  9.             Set rng = .Range(Chr(64 + xi) & "1")
  10.             For sngVal = 1 To 20
  11.                 '  rng = myRnd(sngVal)
  12.                 rng = myRnd(sngVal, 2 ^ 32)
  13.                 Set rng = rng.Offset(1)
  14.             Next sngVal
  15.         Next xi
  16.         .Columns.AutoFit
  17.     End With
  18. End Sub

  19. Function myRnd(Optional Number, Optional m As Double = 2 ^ 24) As Single
  20.     Dim tmp As Double
  21.     '  LCG Algorithm:
  22.     '      X(n+1) = (a * X(n) + c) mod m
  23.     Const a As Long = 1140671485
  24.     Const c As Long = 12820163
  25.     '  Const m As Long = 16777216    '  2^24
  26.     Const x0 As Long = 1         '  根據你使用哪組參數,x0有時有需要符合的條件。
複製代碼

TOP

        靜思自在 : 一個缺口的杯子,如果換一個角度看它,它仍然是圓的。
返回列表 上一主題