首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >设置Excel随机数生成器的种子

设置Excel随机数生成器的种子
EN

Stack Overflow用户
提问于 2015-10-16 01:27:28
回答 4查看 50.5K关注 0票数 25

在excel中,下面的公式将从均值为10和方差为1的正态分布中生成随机数。是否有一种方法可以设置一个fix种子,从而使我始终得到一个固定的随机数集?我正在使用Excel 2010

代码语言:javascript
运行
复制
=NORMINV(RAND(),10,1)
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-10-16 12:05:46

您可以使用电子表格函数实现自己的随机数生成器。例如,C++11有一个名为minstd_randLehmer随机数发生器,它是通过递归获得的。

代码语言:javascript
运行
复制
X = X*g (mod m)

g = 48271m = 2^31-1

A1中,您可以放置种子值。在A2中输入公式:

代码语言:javascript
运行
复制
=MOD(48271*A1,2^31-1)

把它复制到你需要的地方。

B2中输入=A2/(2^31-1),在C2中输入=NORM.INV(B2,10,1),根据需要进行复制。请注意,您始终可以将A1中的种子值替换为

代码语言:javascript
运行
复制
=RANDBETWEEN(1,2^31-2)

如果你想恢复易失性随机性。

下面的屏幕截图显示了以这种方式生成的25个随机正常变量:

从直方图中可以看出,分布大致是正常的。

票数 39
EN

Stack Overflow用户

发布于 2015-10-16 02:27:17

您可以使用基于Rnd()函数的VBA UDF()。请参见:

VBA中的重复随机变量

票数 4
EN

Stack Overflow用户

发布于 2018-09-08 06:28:59

我不是假装这是一个完美的解决方案,但这对我有效。它的优点是,我可以给一个特定的单元分配一个随机数:

代码语言:javascript
运行
复制
Public Function GetRandom(seed As Double, min As Double, max As Double) As Double
    Dim colrow As Double
    Dim range As Double

    range = max - min
    If (Application.Caller.Column() = Application.Caller.Row()) Then
        colrow = (Log(Application.Caller.Column() + 1) * Log(Application.Caller.Row() + 1)) * seed
    Else
        colrow = (Log(Application.Caller.Column() + 1) / Log(Application.Caller.Row() + 1)) * seed
    End If
    Rnd (-1)
    Randomize colrow 
    test = Rnd * range - range / 2
    GetRandom = colrow 
End Function

用法:

代码语言:javascript
运行
复制
=GetRandom($Z$1,1,-1)

我举个例子,种子值在Z1单元中,但当然可以在任何其他单元中。它还允许我设置最小值和最大值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33161114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档