Excel VBA 基于日期的种子
Excel VBA Seed based on the date
我正在开发一个使用种子的程序。这个种子应该基于日期,所以每一天我都会得到一个新值。一天多次使用种子应该不会改变返回值。
这是我的种子的样子:
随机化
todayValue = Int(50 * Rnd)
现在,我如何根据日期制作种子?
是否有另一种方法可以根据日期获得种子?
非常感谢!
参见this post on getting seeded random values in VBA。
您需要做的就是在 运行 您的代码之前使用负值调用 Rnd 函数。为此,您可以使用 Date 函数。在 VBA 中,日期值只是 Longs,表示自过去某个设定日期以来的天数。
这里有一个示例,说明您可以如何做您想做的事。
Sub rndSeedTest()
MsgBox Date & " --> " & CLng(Date)
Rnd -Date
MsgBox Rnd & _
vbNewLine & Rnd & _
vbNewLine & Rnd & _
vbNewLine & Rnd & _
vbNewLine & Rnd
End Sub
如果你想在每次函数运行时得到相同的数字,那么这不是随机数,你必须创建一些看起来随机的东西,例如
Sub test()
Dim todayValue As Long
todayValue = Date
todayValue = todayValue + 1538 ' To make it a little random
MsgBox todayValue
End Sub
我找到了一种方法,我只是将日期和日期保存在 sheet 的某个单元格中。这是我的代码的样子:
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
我正在开发一个使用种子的程序。这个种子应该基于日期,所以每一天我都会得到一个新值。一天多次使用种子应该不会改变返回值。
这是我的种子的样子:
随机化
todayValue = Int(50 * Rnd)
现在,我如何根据日期制作种子? 是否有另一种方法可以根据日期获得种子?
非常感谢!
参见this post on getting seeded random values in VBA。
您需要做的就是在 运行 您的代码之前使用负值调用 Rnd 函数。为此,您可以使用 Date 函数。在 VBA 中,日期值只是 Longs,表示自过去某个设定日期以来的天数。
这里有一个示例,说明您可以如何做您想做的事。
Sub rndSeedTest()
MsgBox Date & " --> " & CLng(Date)
Rnd -Date
MsgBox Rnd & _
vbNewLine & Rnd & _
vbNewLine & Rnd & _
vbNewLine & Rnd & _
vbNewLine & Rnd
End Sub
如果你想在每次函数运行时得到相同的数字,那么这不是随机数,你必须创建一些看起来随机的东西,例如
Sub test()
Dim todayValue As Long
todayValue = Date
todayValue = todayValue + 1538 ' To make it a little random
MsgBox todayValue
End Sub
我找到了一种方法,我只是将日期和日期保存在 sheet 的某个单元格中。这是我的代码的样子:
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