【问题标题】:Excel VBA Seed based on the date基于日期的 Excel VBA 种子
【发布时间】:2018-11-09 14:19:18
【问题描述】:

我正在开发一个使用种子的程序。这个种子应该基于日期,所以每一天我都会得到一个新的值。一天多次使用种子应该不会改变返回的值。

这是我的种子的样子:

随机化

tod​​ayValue = Int(50 * Rnd)

现在,我如何根据日期创建种子? 是否有其他方法可以根据日期获得种子?

非常感谢!

【问题讨论】:

  • 到目前为止你能写出你的代码吗?以便我们更好地帮助您...

标签: excel vba seed seeding random-seed


【解决方案1】:

this post on getting seeded random values in VBA

您需要做的就是在运行代码之前使用负值调用 Rnd 函数。为此,您可以使用 Date 函数。在 VBA 中,Date 值只是 Long,表示自过去某个设定日期以来的天数。

这里有一个例子,说明你可以如何做你想做的事。

Sub rndSeedTest()
    MsgBox Date & " --> " & CLng(Date)
    Rnd -Date
    MsgBox Rnd & _
        vbNewLine & Rnd & _
        vbNewLine & Rnd & _
        vbNewLine & Rnd & _
        vbNewLine & Rnd
End Sub

【讨论】:

    【解决方案2】:

    如果您希望每次函数运行时都获得相同的数字,那么这不是随机数,您必须创建一些看起来随机的东西,例如

    Sub test()
        Dim todayValue As Long
        todayValue = Date
        todayValue = todayValue + 1538 ' To make it a little random
        MsgBox todayValue
    End Sub
    

    【讨论】:

      【解决方案3】:

      我找到了一种方法,我只需将日期和当天的值保存在工作表上的某个单元格中。这就是我的代码的样子:

      If MainSheet.Cells(1, 1) = Date Then   
          todayValue = MainSheet.Cells(1, 2)
      Else    
          Randomize
          todayValue =  Int(50 * Rnd)
          MainSheet.Cells(1,1) = Date    'saves the date in Sheet
          MainSheet.Cells(1,2) = todayValue    'saves todayValue in Sheet
      End If
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-02
        • 2021-12-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多