怎样在随机生成5个不相同的数??

lansiluo 2002-05-17 03:34:04
Do
Data1.Recordset.MoveLast
con = Data1.Recordset("number") + 1
LG = Int(Rnd * con)



Data1.Recordset.MoveFirst
Data1.Recordset.Index = "0165"

Data1.Recordset.Seek "=", LG, 0


Loop While Data1.Recordset.NoMatch = True
这是我的一段源程序,随机生成一个数,在数据库中找到与这个数
相同的字段,取出这条记录
现在我想同时生成5个不同的数,应该怎么做呢?
Rnd函数有这种功能吗?
...全文
516 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
smint 2002-05-18
  • 打赏
  • 举报
回复
Randomize
Dim a(5) as bool,x(5) as integer,j as integer, i as integer
for i = 1 to 5
a(i)=false
next i
For i = 1 to 5
Redo:
j=int(rnd(1)*5)
if a(i)=true then goto redo
a(i)=true
next i
smint 2002-05-18
  • 打赏
  • 举报
回复
Randomize
Dim a(5) as bool,x(5) as integer,j as integer
For i = 1 to 5
j=int(rnd(1)*5)

BillOB 2002-05-18
  • 打赏
  • 举报
回复
randamize(Time)
dim x(5) as long
for i=1 to 5
x(i)=int(rnd*?)
next i
因为产生的随机数介于0-1之间,所以rnd*?,?就是你要的范围

这样的话,肯定随机了,因为time一直在变嘛
qbilbo 2002-05-17
  • 打赏
  • 举报
回复
如果随机数是一位数可以用以下方法:
选声明一个字符串变量,给它赋值 "0123456789"
产生一个1到10的随机数,按随机数的值从该字符串中用mid截取一个字符,再转换成数字,然后将字符串变量中截取的字符删除。
第二次产生一个1到9的随机数来截取......

如果是n位数,可以先产生一个n-1位数的随机数,再用上面的方法产生一个随机数,再将两个数字并起来就行了。。
xxlroad 2002-05-17
  • 打赏
  • 举报
回复
Private Sub Command1_Click()
Dim i As Integer
Dim k As Integer
Dim c(5) As Integer
For i = 1 To 5 '5个不相同的2位数
Randomize Timer
c(i) = Int(Rnd * 90) + 10
k = i
For j = 1 To k - 1
If c(j) = c(k) Then i = i - 1 '如果相同就不要
Next j
Next i
For i = 1 To 5
Print c(i);
Next i
Print
End Sub
xxlroad 2002-05-17
  • 打赏
  • 举报
回复
Private Sub Command1_Click()
Dim rndnum(5)
Dim i
Randomize
For i = 1 To 5
rndnum(i) = Rnd()
MsgBox rndnum(i)
Next i
End Sub
在实际使用的时候也会有重复的
dragon0105 2002-05-17
  • 打赏
  • 举报
回复

Randomize'让程序"真正"随机

rnd'要多少就写多少吧,自己用个for...next...
ivt 2002-05-17
  • 打赏
  • 举报
回复
LG = Int(Rnd * time)
acptvb 2002-05-17
  • 打赏
  • 举报
回复

感谢您使用微软产品。

函数Rnd根据初始的seed产生一系列随机数,相同的seed将产生相同的数,因此需要在调用Rnd前用Randomize初始化seed。如下例将产生5个随机数。

Private Sub Command1_Click()
Dim rndnum(5)
Dim i
Randomize
For i = 1 To 5
rndnum(i) = Rnd()
MsgBox rndnum(i)
Next i
End Sub


详细信息请参考以下链接:
Rnd Funtion
http://msdn.microsoft.com/library/en-us/vbenlr98/html/vafctRnd.asp

Randomize Statement
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vblr7/html/vastmrandomize.asp


- 微软全球技术中心 VB技术支持

本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款
(http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。
为了为您创建更好的讨论环境,请参加我们的用户满意度调查
(http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。
Greaitm 2002-05-17
  • 打赏
  • 举报
回复
不会吧,我以前都这样用的,要不你先用Random函数初始化一下
ghostjoe 2002-05-17
  • 打赏
  • 举报
回复
不要加字段阿,你定义一个数组,然后做个循环,每次将生成的数和数组里的数逐个比较,如果有重复的就重新生成,没有重复的,就可以把这个随机数也放到数组里,作为下次比较的元素,如此循环,一直到产生5个不相同的随机数不就ok了?
lansiluo 2002-05-17
  • 打赏
  • 举报
回复
用五次会出现有相同的数!!
我还不想在数据库中增加一个字段进行区别
我想知道还有没有别的方法可一次随机产生5个不同的数?
daryl715 2002-05-17
  • 打赏
  • 举报
回复
每生成一个数存到一个数组

再生成数的时候判断是否在数组中已有,有的花继续生成下一个数
Greaitm 2002-05-17
  • 打赏
  • 举报
回复
你用五次,不就行了?

7,763

社区成员

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

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