excel VBA 如何控制随机数字分布比例?

壳beta2022-10-04 11:39:541条回答

excel VBA 如何控制随机数字分布比例?
Function sj(n,min,max) '生成随机数函数,n个不同的随机数,范围[min,max]
Dim p,m
ReDim p(1 To n) 'p为储存生成的随机数的数组
m = max - min + 1
p(1) = Int(Rnd * m + min) '生成一个[min,max]范围的随机数
For i = 2 To n '循环生成n-1个[min,max]范围的随机数
Do '循环
p(i) = Int(Rnd * m + min) '生成随机数
For j = 1 To i - 1 '和前面生成的随机数比较
If p(i) = p(j) Then Exit For '如果有相同的退出for循环
Next
Loop Until j = i '直到没有相同的,退出do循环,保证生成的是不同随机数
Next
sj = p '函数返回值
End Function

另外,
p1 = sj(35,1,50) 'p1为35个1-50的随机数数组
p2 = sj(20,51,100) 'p2为20个51-100的随机数数组
这里20跟35是怎么来的?

已提交,审核后显示!提交回复

共1条回复
shenhailansha 共回答了21个问题 | 采纳率100%
因为你分成了2组,一组从1-50里面抽取,二组从51-100里面抽取,抽取原理是一样的,为了不用写重复的代码,写了一个自定义的函数.
35=50*70%,20=50*40%,按你的比例算出来的
1年前

相关推荐

excel vba统计表格中的计算数目
excel vba统计表格中的计算数目
如果在excel表格中输入=0.15*0.23+0.12*0.23那么统计的计算式的数量就是2,如果输入=0.15*0.23*2+0.12*0.23那么统计的计算式的数量就是2+1=3
就是统计一下有几个两位数的乘法公式,
lawrence311年前1
yyy00000 共回答了19个问题 | 采纳率100%
我觉得应该是:
Function Cnt(r As Range)
Dim n%, l%
cFor = r.Formula
arr = Split(Replace(cFor, "=", ""), "+")
For i = 0 To UBound(arr)
brr = Split(arr(i), "*")
l = 0
For j = 0 To UBound(brr)
If Val(brr(j)) = Int(brr(j)) Then n = n + brr(j): l = l + 1
Next
If l = 0 Then n = n + 1
Next
Cnt = n
End Function
然后,假设计算式在A1,则在需要得到结果的单元格输入
=Cnt(A1)
”excel vba 有4个数2,2,4,5 用循环相互对比,得出这4个数中有3个互不相同的数的个数是3
TEMP0101年前1
单身de猪 共回答了15个问题 | 采纳率93.3%
Sub createdictionary()
arr = Array(2,2,4,5)
Set dic = CreateObject("scripting.dictionary")
For Each a In arr
If Not dic.exists(a) Then dic.Add a,""
Next
MsgBox "这一组数据中不重复的数据个数为" & dic.Count & "个"
End Su
excel VBA 任意两列数值完全相同比较
excel VBA 任意两列数值完全相同比较
excel VBA问题:例如有10列数据:A1:A100,B1:B100,C1:C100,D1:D100.....
当A1=B1,A2=B2,A3=B3,A4=B4,A5=B5......一直到A100=B100.A列完全相同B列时,或C列完全相同A列,或F列完全相同J列.里面只要有任意两列完全相同的数值.返回相同的其中一列
请问用用什么函数比较?
zgb13145211年前1
冥冥之间 共回答了19个问题 | 采纳率94.7%
用VBA 随便在一个单元格输入=SUMPRODUCT((A1:A100=B1:B100)*1)判断如果这个单元格值=100 就是完全相同,直接用for循环
excel VBA 如何控制随机数字分布比例?
excel VBA 如何控制随机数字分布比例?

如图所示,一百个病人,分成2组,每组50个,现在要将A、B两种治疗方案应用到所有病人身上.A、B是随机分配给病人的,要求第一组病人接受A方案治疗的比例为70%,第二组接受A的比例为40%,如何实现?


尘埃还没落定1年前1
乐乐还很小 共回答了15个问题 | 采纳率93.3%
你可以随机抽取50*70%=35个人分配A方案,剩下的B方案
另一组同理抽取50*40%=20个人分配A方案,剩下的B方案