搜索

excel生成随机数据要大于30且小于300 数值要为正整数可余小数且和为固 ...

发布网友 发布时间:2024-09-28 23:06

我来回答

4个回答

热心网友 时间:2024-10-08 10:35

主要修改:
1、需要增加“原始数据”与“份数”的符合性测试。如:原始数据为100,份数为5,则无法达到最小为30的要求。再如,原始数据为1000,份数为3,则无法达到最大为300的要求。对以上情况修改后的代码要求重置原始数据。
2、增加随机生成数据的符合性测试,达到必须大于30小于300的要求后。
代码如下:
Sub test()

Dim x, y As Double '原始数据
Dim n As Integer '定义要分的份数
Dim t As Integer '定义分出来数据精度
Dim num() As Variant '保存分出来的数据

Columns("D:D").Select
Selection.ClearContents '清除数据显示列原来的内容

10:
x = Cells(1, 2) '获取表格里的定义的原始数据
n = Cells(2, 2) '获取表格里定义份数
t = Cells(3, 2) '获取表格里定义分出来数据精度
If x / n < 30 Or x / n > 300 Then
MsgBox "原始数据有误!请重新设定!"
GoTo 20
End If
y = x
ReDim num(n)
For i = 1 To n - 1 Step 1
Randomize '重置随机种子
num(i) = Round(30 + x / n * Rnd(), t) '生成一个随机数据
y = y - num(i)
Next
If y <= 300 Then
For i = 1 To n - 1 Step 1
Cells(i, 4) = num(i)
Next
Cells(n, 4) = y
Else
GoTo 10
End If
20:
End Sub

热心网友 时间:2024-10-08 10:35

路过,不会,先顶一下。只会用 =RANDBETWEEN(30,300)

热心网友 时间:2024-10-08 10:33

不会问问题,很难写好代码啊
是要生成多少个?

热心网友 时间:2024-10-08 10:33

有点明白了,或许你能不能把你遇到的问题描述下,为何要这么绕着去求这些数字?
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
Top