产生不重复的随机数

2702343 2004-09-30 12:55:41
我在做一个小游戏是要求产生一组不重复的数
我是这样实现的
Public Sub Rand()
Dim i, j, k As Integer
Dim rd As System.Random
rd = New Random
k = (rd.Next Mod 8) + 1
NoR(0) = k
For i = 1 To 7
k = (rd.Next Mod 8) + 1
j = 0
While j < i
If k = NoR(j) Then
k = (rd.Next Mod 8) + 1
j = 0
Else
j += 1
End If

End While
NoR(i) = k
Next
End Sub
但感觉速度比较慢,请问各位有没有更好的实现 方法没??
谢谢
...全文
293 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
2702343 2004-11-03
  • 打赏
  • 举报
回复
谢谢,各位! 小第谢过啦!
deeryu 2004-11-01
  • 打赏
  • 举报
回复
简单的直接用Random函数,复杂的再写点过程进去
yuan1357 2004-10-13
  • 打赏
  • 举报
回复
只要利用系统时间改变种子数就可以了!
yuan1357 2004-10-13
  • 打赏
  • 举报
回复
Randomize(Second(Now))

Rnd()
j_x_y 2004-10-06
  • 打赏
  • 举报
回复
呵呵~~我来,用傻办法~~~~

Public Sub RandoValue()
dim UserX1 As Integer
dim UserX2 As Integer
dim UserX3 As Integer
dim UserX4 As Integer

UserX1 = Int(Rnd * 9)
Do
UserX2 = Int(Rnd * 9)
Loop While UserX1 = UserX2
Do
UserX3 = Int(Rnd * 9)
Loop While UserX1 = UserX3 Or UserX2 = UserX3
Do
UserX4 = Int(Rnd * 9)
Loop While UserX1 = UserX4 Or UserX2 = UserX4 Or UserX3 = UserX4

End Sub
韧恒 2004-10-05
  • 打赏
  • 举报
回复
Private Function GetRnd(min As Long, max As Long)
Dim Pointer() As Long
Dim Count As Long
Dim i As Long
Dim index As Long

Randomize Timer

Count = max - min
ReDim Pointer(Count)

'** 将数组初化为min ... max
For i = 0 To Count
Pointer(i) = min + i
Next
For i = Count To 0 Step -1
index = Int((i + 1) * Rnd) '随机选择从0 - i之间的整数

Debug.Print Pointer(index) ' 输出这个数字。

Pointer(index) = Pointer(i)
Next
End Function

这个可以输出从min到max之间的整数,由于只使用了数组,所以速度应该可以达到要求了。不过它是随机输出的数值总体上是连续的。如果你不想这样,可以适当地修改它:比如,初始化100个数值,但只随机输出80个。
northwolves 2004-09-30
  • 打赏
  • 举报
回复
Private Sub Command1_Click()
getrnd 20, 100, 32
End Sub

Sub getrnd(ByVal min As Long, ByVal max As Long, ByVal n As Long) '随机不重复产生n个min 到max之间的数
If max < min Or n > (max - min + 1) Then Exit Sub
Dim i As Long, all As New Collection, temp As Long
For i = min To max
all.Add i
Next
Randomize
For i = 1 To n
temp = Int(Rnd * all.Count + 1)
Debug.Print all(temp)
all.Remove temp
Next
End Sub

1,066

社区成员

发帖
与我相关
我的任务
社区描述
VB 资源
社区管理员
  • 资源
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧