《今天11点揭贴。希望11点前能够出现救世主》这 几天接触到VB。做了个简单的游戏,现在碰到个小麻烦。关于随机函数的问题。希望大家能帮

baizhongri 2003-12-18 09:12:59
Private Sub Command1_Click()
Dim i As Integer

Dim a(9) As Integer
For i = 1 To 9

a(i) = Int((Rnd * 9) + 1)

Print a(i)

Next i
End Sub
这个随机函数的范围是1到9,而我呢 想让它产生1到9 不重复的数。很简单的,只是刚学VB不适应 ,希望你们都能帮我。这个帖子今天11:00揭贴。。。谁给 详细的原代码,给50分。
...全文
62 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
SmileSkyNet 2003-12-18
  • 打赏
  • 举报
回复
你的这个应用我原来用过(我用的是0-9),我用来做猜数游戏,每次随机出现4个不同的数字组成一个四位数。。。。源码吗,我要找找,写起来有点麻烦!!!
lgs666 2003-12-18
  • 打赏
  • 举报
回复
Option Explicit

Private Sub Command1_Click()
Dim I As Integer
Dim intArray(10) As Integer
Dim intRnd As Integer
Dim dblK As Double

Randomize
Do While True
intRnd = Val(Left(Rnd, 1))
If Not IsInArray(intRnd, intArray) Then
intArray(I) = intRnd
Debug.Print intArray(I)
I = I + 1
End If
If I = 9 Then
Exit Do
End If
Loop

End Sub

Private Function IsInArray(ByVal intItemToFind As Integer, ByRef intArray() As Integer) As Boolean
Dim I As Integer

For I = LBound(intArray) To UBound(intArray())
If intArray(I) = intItemToFind Then
IsInArray = True
Exit Function
End If
Next
IsInArray = False
End Function

landongfang 2003-12-18
  • 打赏
  • 举报
回复
Private a(1 To 9) As Integer
Private Sub Command1_Click()

If Timer1.Enabled = True Then
Timer1.Enabled = True
Else
Timer1.Enabled = True
End If

End Sub
Private Sub Rep()
Dim i As Integer
Dim temp As Integer
Dim temp1 As Integer

temp = Int((Rnd(3) * 9) + 1)
temp1 = a(1)
a(1) = a(temp)
a(temp) = temp1
End Sub

Private Sub Form_Load()
Dim i As Integer
For i = 1 To 9
a(i) = i
Next
End Sub

Private Sub Timer1_Timer()
Call Rep
End Sub
hcj2002 2003-12-18
  • 打赏
  • 举报
回复
0--9不重复的数???

如果有产生10个数呢??
liyan010 2003-12-18
  • 打赏
  • 举报
回复
用我这个代码吧,不需要判断是否重复,而且也不需要定义动态数组,绝对节省系统资源:

Dim mysz(8) As Integer'9维数组

Private Sub Form_Load()
Dim i As Integer
For i = 0 To 8
mysz(i) = i + 1初始化
Next i
End Sub

Private Sub Command1_Click()
Dim A As Integer, B As Integer, t As Integer, num As Integer
Dim str As String
num = 0
For num = 0 To 49
Randomize Timer
A = Int(Rnd() * 9)
Randomize Timer
B = Int(Rnd() * 9)
t = mysz(A): mysz(A) = mysz(B): mysz(B) = t'交换
Next num
For t = 0 To 8
str = str & mysz(t)
Next t
Print str'打印
End Sub
SoHo_Andy 2003-12-18
  • 打赏
  • 举报
回复
试试看,我的程序

Private Sub Command1_Click()
Dim i As Integer
Dim j As Integer
Dim a() As Integer
Dim intTemp As Integer
ReDim a(0)
For i = 1 To 9
Do While True
intTemp = Int((Rnd * 9) + 1)
For j = 0 To UBound(a)
If a(j) = intTemp Then
i = i - 1
Exit Do
End If
Next
ReDim Preserve a(i - 1)
a(i - 1) = intTemp
Debug.Print a(i - 1)
Exit Do
Loop
Next i
End Sub
landongfang 2003-12-18
  • 打赏
  • 举报
回复
Private Sub Command1_Click()

Dim a(1 To 9) As Integer
Dim temp As Integer
Dim i As Integer

i = 1
While i <= 9
temp = Int((Rnd(3) * 9) + 1)
If Rep(a, temp, i) = True Then
a(i) = temp
i = i + 1
End If
Wend

End Sub
Private Function Rep(b() As Integer, T As Integer, n As Integer) As Boolean
Dim i As Integer
For i = 1 To n
If b(i) = T Then
Rep = False
Exit Function
End If
Next
Rep = True
End Function
ides 2003-12-18
  • 打赏
  • 举报
回复
请再定义一个数组,如b(9),在a(i) = Int((Rnd * 9) + 1)后加上一个循环语句和一个判断语句:当每产生一个随机树就把他放到b(j)中,并要与b(j)中的每个树比较,如果产生的树在b(j)中已经有了则不再显示
jhzhou882 2003-12-18
  • 打赏
  • 举报
回复
Private Sub Command1_Click()

Dim i, j As Integer
Dim use As Integer
Dim a(9) As Integer

For i = 1 To 9
use = Int((Rnd(1) * 9) + 1)
For j = 0 To i - 1
If a(j) = use Then
i = i - 1
Exit For
Else
a(i) = use
End If
Next j
Next i

End Sub
liyan010 2003-12-18
  • 打赏
  • 举报
回复
我就是救世主,传说中的the one!

把1~9放在一个数组里mysz(8),然后每次随机取两个数交换数值,如第一次随机取到mysz(6)和mysz(3),则利用t=mysz(6),mysz(6)=mysz(3),mysz(3)=t来实现交换......
如此循环50次,1-9的九个数字的顺序即被随即打乱.
现在你只需从mysz(0)一直取到mysz(8)即可以随机顺序取得1-9间的随机数,而且不重复.
landongfang 2003-12-18
  • 打赏
  • 举报
回复
Private Sub Command1_Click()

Dim a(1 To 9) As Integer
Dim temp As Integer
Dim i As Integer

i = 1
While i < 9
temp = Int((Rnd * 9) + 1)
If Rep(a, temp, i) = True Then
a(i) = temp
i = i + 1
End If
Print a(i)
Wend

End Sub
Private Function Rep(b() As Integer, T As Integer, n As Integer) As Boolean
Dim i As Integer
For i = 1 To n
If b(i) = T Then
Rep = False
Exit Function
End If
Next
Rep = True
End Function

佛的光辉 2003-12-18
  • 打赏
  • 举报
回复
9个不重复的数?范围是多少
在Windows 10或Windows 11操作系统中,用户经常会遇到共享打印机时出现的一系列错误代码,这些错误代码可能会阻碍打印机共享功能的正常使用。常见的错误代码包括0x00000057、0x00000709和0x0000011b,这些代码通常指出了不同的问题,比如权限不足、服务未运行或配置错误等。除此之外,还有一些故障提示如“连接失败”或“内存不足”,这些都可能影响到打印机共享的稳定性。 要解决这些故障,首先要确保打印机已经正确地连接到网络,并且在需要共享的电脑上进行了设置。确保打印机驱动程序是最新的,并且在共享设置中没有错误配置。对于权限问题,需要检查网络上的用户账户是否具有足够的权限来访问共享打印机。同时,也要确保打印机服务正在运行,特别是“Print Spooler”服务,因为这是打印机共享服务的核心组件。 在某些情况下,问题可能与操作系统的更新有关,如升级到最新版的Windows 10或Windows 11后可能出现的兼容性问题。这时,可能需要查看微软的官方支持文档来获取特定的解决方案或更新。 对于错误代码0x00000057,这通常是由于没有足够的权限来访问网络打印机或其共享资源,解决方法是确保网络打印机的权限设置正确,包括在组策略中设置相应的访问权限。而0x00000709错误可能是由于打印机驱动问题或打印机端口配置错误,可以尝试重新安装或更新打印机驱动来解决。至于0x0000011b错误,这往往是因为打印机队列服务的问题,检查并重启“Print Spooler”服务通常是解决这类问题的常见手段。 至于“连接失败”或“内存不足”这类故障,通常与客户端和打印机之间的网络连接以及打印机本地资源的使用情况有关。检查网络连接,确保打印机所在的网络段没有故障或中断。同时,如果打印机的打印队列长时间得不到处理,可能会导致内存不足的情况,这时可能需要清理打印队列或增加打印机的内存配置。 为了助用户更快速地解决这些问题,市面上出现了各种打印机共享错误修复工具。这些工具往往通过预设的修复程序来自动检测和修正打印机共享中常见的问题。它们可以快速检查打印机驱动、网络连接以及共享设置,并且能够提供一键修复功能,大幅减少了用户自行排查和解决问题的难度。 然而,在使用这些修复工具之前,用户应确保这些工具的来源是安全可靠的,避免因使用不当的修复工具而引发其他系统安全或隐私问题。用户可以到官方平台或者信誉良好的软件提供商处下载这些工具。通过细心检查打印机的共享设置,及时更新驱动程序和服务,以及合理使用修复工具,大多数共享打印机的问题都可以得到有效的解决。

7,785

社区成员

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

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