我的逻辑一直有问题。我需要一组随机数来加100。适用于这些数字的限制如下:
数字1- 20至80
数字2- 10至40
数字3-5至20
我知道这可能很简单,但我不能把它当回事。
提前谢谢。
发布于 2014-04-16 19:28:36
如果你这样做,E到G列就是你的随机数。列H是一个检查,以确保您的约束在缩放后仍然满足。这样做对宏解决方案的好处是计算效率,因为大约80%的尝试结果是满足约束条件,而不是宏方法,而宏方法只产生略多于1%的结果。当然,这个缩放逻辑可以在宏中完成,但是这里是工作表函数。
编辑:看起来我的屏幕截图越来越难读了,下面是第一行从左到右的公式.
=RANDBETWEEN(20,80)
=RANDBETWEEN(10,40)
=RANDBETWEEN(5,20)
=SUM(A1:C1)
=A1/($D1/100)
=B1/($D1/100)
=C1/($D1/100)
=IF(AND(E1>=20,F1<=80,G1>=5,G1<=20),1,0)
发布于 2014-04-16 17:22:47
这些计算什么时候需要执行?(就目前情况而言,使用randomBetween时,每次单元格更改值时都会重新计算。数字15-19有可能出现在第一位。我想弄清楚如何用宏来防止它.
发布于 2014-04-16 17:36:31
(如果一开始你没有成功.)
Easy.....just运行这个小宏:
Sub randommm()
Dim wf As WorksheetFunction
Set wf = Application.WorksheetFunction
zum = 0
While zum <> 100
v1 = wf.RandBetween(20, 80)
v2 = wf.RandBetween(10, 40)
v3 = wf.RandBetween(5, 20)
zum = v1 + v2 + v3
DoEvents
Wend
[A1] = v1
[A2] = v2
[A3] = v3
End Sub
EDIT#1
宏非常容易安装和使用:
如果您保存工作簿,则将使用它保存宏。如果您在2003年晚些时候使用Excel版本,则必须将该文件保存为.xlsm而不是.xlsx。
若要删除宏,请执行以下操作:
若要使用Excel中的宏:
要了解有关宏的更多信息,请参见:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
和
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
必须启用宏才能使其工作!
EDIT#2
删除旧宏并将其替换为:
Sub randommm()
Dim wf As WorksheetFunction
Set wf = Application.WorksheetFunction
For i = 1 To 1000
zum = 0
While zum <> 100
v1 = wf.RandBetween(20, 80)
v2 = wf.RandBetween(10, 40)
v3 = wf.RandBetween(5, 20)
zum = v1 + v2 + v3
DoEvents
Wend
Cells(i, 1) = v1
Cells(i, 2) = v2
Cells(i, 3) = v3
Next i
End Sub
https://stackoverflow.com/questions/23115834
复制相似问题