在excel中,可以用工作表函数RAND生成一个小于1,大于等于0的随机实数。
这个函数是没有参数的,用法很简单,直接=RAND()即可。
根据算法,即使整个工作表的单元格都使用这个函数,生成的数之间也几乎不会有重复的概率。
在vba中可以使用Rnd函数生成一个小于1,大于等于0的随机实数。
它的语法如下:
Rnd[(number)]
1.如果number参数不提供或者是>0的话,则生成随机数序列中的下一个随机数。
例如如下的代码将在工作表中生成100个小于1,大于等于0的随机不重复实数:
Sub QQ1722187970() Dim oWK As Worksheet Set oWK = Sheet2 With oWK .Cells.Clear For i = 1 To 100 'Rnd函数的参数不提供 .Cells(i, 1) = VBA.Rnd Next i End With End Sub
Sub QQ1722187970() Dim oWK As Worksheet Set oWK = Sheet2 With oWK .Cells.Clear For i = 1 To 100 'Rnd函数的参数>0 .Cells(i, 1) = VBA.Rnd(2) Next i End With End Sub
2.如果number参数=0的话,则返回最近一个用Rnd函数返回的随机数。
Sub QQ1722187970() Dim oWK As Worksheet Set oWK = Sheet2 With oWK .Cells.Clear For i = 1 To 5 'Rnd函数的参数>0 .Cells(i, 1) = VBA.Rnd(1) Next i For i = 6 To 10 'Rnd函数的参数=0,返回最近一个用Rnd函数返回的随机数,也就是cells(5,1)中存储的随机数 .Cells(i, 1) = VBA.Rnd(0) Next i End With End Sub
3.如果如果number参数<0的话,则返回一个不变的用number作为随机数发生seed产生的第一个随机数。
Sub QQ1722187970() Dim oWK As Worksheet Set oWK = Sheet2 With oWK .Cells.Clear For i = 1 To 5 'Rnd函数的参数>0 .Cells(i, 1) = VBA.Rnd(1) Next i For i = 6 To 10 'Rnd函数的参数=0,返回最近一个用Rnd函数返回的随机数,也就是cells(5,1)中存储的随机数 .Cells(i, 1) = VBA.Rnd(0) Next i For i = 11 To 15 'Rnd函数的参数<0,将返回一个不变的数,这个数是用参数-3作为随机数发生数seed后产生的第一个随机数 .Cells(i, 1) = VBA.Rnd(-3) Next i End With End Sub
4.对于相同的随机数序列发生数seed,Rnd函数返回的随机数序列将是一样的。
5.如果要改变生成的随机数序列,可以在使用Rnd函数前先用Randomize语句初始化一个随机数序列发生数seed。
Sub QQ1722187970() '生成一个随机数seed Randomize Dim oWK As Worksheet Set oWK = Sheet2 With oWK .Cells.Clear For i = 1 To 5 'Rnd函数的参数>0 .Cells(i, 1) = VBA.Rnd(1) Next i For i = 6 To 10 'Rnd函数的参数=0,返回最近一个用Rnd函数返回的随机数,也就是cells(5,1)中存储的随机数 .Cells(i, 1) = VBA.Rnd(0) Next i For i = 11 To 15 'Rnd函数的参数<0,将返回一个不变的数,这个数是用参数-3作为随机数发生数seed后产生的第一个随机数 .Cells(i, 1) = VBA.Rnd(-3) Next i End With End Sub
发表评论