作业帮 > 综合 > 作业

EXCEL中,我想在一个单元格区域内产生N个随机数整数,这些随机整数不能重复!

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/28 09:00:53
EXCEL中,我想在一个单元格区域内产生N个随机数整数,这些随机整数不能重复!
我试过rand函数和randbetween函数,但他们产生和结果都会有很多重复!急用!有意回答者,
Private Sub 试算_Click()
Dim seed,msg,tmsg,num,t4,t5,i
seed = Year(Date) & Month(Date) & Day(Date) & Hour(Now()) & Int(Second(Now()) / 10)
Randomize (seed)
t4 = Val(TT4.Text) 'TT4和TT5为赋值文本框
t5 = Val(TT5.Text)
For i = t4 To t5
msg = " "
num = 0
Do Until num = 8
tnum = Int(Application.RandBetween(1,20))
If InStr(" " & msg & " ",tnum) = 0 Then
num = num + 1
msg = msg & tnum & " "
End If
Loop
msg = Split(Trim(msg)," ")
For num = 0 To UBound(msg)
Cells(i,27 + num + 1).Value = msg(num)
Next num
Next i
End Sub
此程序是我用看了别人的程序加以改善而来,
用来模拟广东快乐十分20选8出号程序期中的一段!
此段程序所产生的1到20的随机数,反复试了好几个500期随机数,前面小数1-5分布很少!20选8,平均机率为0.4,500期产生的每个数出号次数应该控制在180-220之间,100期内每个数出号次数应控制在32-48之间,即幅度应在0.32-0.48之间.如何写程序!
有帮我者,
打开excel文档,然后按alt+f11进入vbe编辑窗口,插入模块
'然后把下面的代码复制到模块里面,然后保存,再次按alt+f11返回
'excel窗口,按alt+f8,运行suijishu宏就可以在当前表格a1-a500
'产生不重复的1-500个随机数,希望对你有用,代码已亲测通过
,----------------代码如下-------------------
Sub suijishu()
Dim t,i,sjs(500)
For t = 1 To 500
Randomize
sjs(t) = Int(500 * Rnd) + 1
For i = 1 To (t - 1)
If sjs(t) = sjs(i) Then
sjs(t) = Int(500 * Rnd) + 1
i = 0
End If
Next i
Next t
For t = 1 To 500
ActiveSheet.Range("a" & t).Value = sjs(t)
Next t
End Sub
再问: 首先感谢你的回答,你的程序完全OK,但和我的程序一样,有点小小的不足在于,前面小数部份,分布太少,我想把每个数的出号次数的幅度控制在一定范围内,期数越多,越平均!要求一定的平衡度! (20选8) 50期:每个数次数机率(0.3-0.5), 100期:0.32-0.48, 300期:0.35-0.45, 500期:0.37-0.43, 1000期:0.38-0.42 谢谢你再帮帮我!看我的问题补充!一定厚报!谢谢!