VB.net随机产生10个小于数字不重复
DimiAsIntegerDimj(11)AsIntegerRandomize()i=CInt(Int((10*Rnd())+1))'产生1到10的一个任意值(),然后分...
Dim i As Integer
Dim j(11) As Integer
Randomize()
i = CInt(Int((10 * Rnd()) + 1))
'产生1到10的一个任意值(),然后分别放入j()数组中,要求不能出现重复得数字
不知道怎么实现类似于抽签的功能,希望高手指教!非常之感谢 展开
Dim j(11) As Integer
Randomize()
i = CInt(Int((10 * Rnd()) + 1))
'产生1到10的一个任意值(),然后分别放入j()数组中,要求不能出现重复得数字
不知道怎么实现类似于抽签的功能,希望高手指教!非常之感谢 展开
展开全部
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim i, j
j = GetRndNotRepeat(1, 10, 10)
If j(0) Then
For i = 1 To 10
MsgBox(j(i))
Next
End If
End Sub
Public Function GetRndNotRepeat(ByVal NumMin As Integer, ByVal NumMax As Integer, ByVal n As Integer)
'编制:xsfhlzh
'功能仿闷:取NumMin到NumMax间的n个随机整数
'说明:取数标志信兄数组是Byte,每一位表示NumMin到NumMax间某个数的状态
Dim arr() As Integer
If n > NumMax - NumMin + 1 Then
ReDim arr(0)
arr(0) = 0
Return arr
Else
ReDim arr(n)
Dim m As Integer
Dim b() As Byte
m = Int((NumMax - NumMin) / 8)
ReDim b(m)
'取数标志
Dim i
Dim x, y, z As Integer
Randomize()
arr(0) = 1
For i = 1 To n
Do
'找到x的位置,y表示x在数组的第几个字节,z表示x在备坦弯该字节的第几位
x = Int(Rnd() * (NumMax - NumMin + 1)) + NumMin
y = x - NumMin
z = 2 ^ (y Mod 8)
y = y \ 8
Loop While b(y) And z
b(y) = b(y) Or z
arr(i) = x
'找到未取的数,并放入数组,设置标志位
Next i
End If
Return arr
End Function
Dim i, j
j = GetRndNotRepeat(1, 10, 10)
If j(0) Then
For i = 1 To 10
MsgBox(j(i))
Next
End If
End Sub
Public Function GetRndNotRepeat(ByVal NumMin As Integer, ByVal NumMax As Integer, ByVal n As Integer)
'编制:xsfhlzh
'功能仿闷:取NumMin到NumMax间的n个随机整数
'说明:取数标志信兄数组是Byte,每一位表示NumMin到NumMax间某个数的状态
Dim arr() As Integer
If n > NumMax - NumMin + 1 Then
ReDim arr(0)
arr(0) = 0
Return arr
Else
ReDim arr(n)
Dim m As Integer
Dim b() As Byte
m = Int((NumMax - NumMin) / 8)
ReDim b(m)
'取数标志
Dim i
Dim x, y, z As Integer
Randomize()
arr(0) = 1
For i = 1 To n
Do
'找到x的位置,y表示x在数组的第几个字节,z表示x在备坦弯该字节的第几位
x = Int(Rnd() * (NumMax - NumMin + 1)) + NumMin
y = x - NumMin
z = 2 ^ (y Mod 8)
y = y \ 8
Loop While b(y) And z
b(y) = b(y) Or z
arr(i) = x
'找到未取的数,并放入数组,设置标志位
Next i
End If
Return arr
End Function
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2008-04-17 · 知道合伙人互联网行家
关注
展开全部
我有个思路,但是我不是做程序的,不知道可行不。
1,先创建2个数组。A数组装数字,0-10;B数组为空。
2,随即取数字,作为A数组的下标,把该数字传递给B数组,作为B0.
3,删掉A数组中该者闷下标数字,并且把该下标以后桐世的数字的下标依次减1.
4,重复2-3.
呵呵,只是自己的想法,局嫌肢也不知道好使不。。。。呵呵。
1,先创建2个数组。A数组装数字,0-10;B数组为空。
2,随即取数字,作为A数组的下标,把该数字传递给B数组,作为B0.
3,删掉A数组中该者闷下标数字,并且把该下标以后桐世的数字的下标依次减1.
4,重复2-3.
呵呵,只是自己的想法,局嫌肢也不知道好使不。。。。呵呵。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不知道是不是这个
我自己发现的简单方法:
1: Randomize
A = Fix(Rnd * 10)
B = Fix(Rnd * 10)
C = Fix(Rnd * 10)
D = Fix(Rnd * 10)
If A <> B And A <> C And A <> D And B <> C And B <>搭拦 D And C <> D Then
Else: GoTo 1
End If
生成知乎胡4个0~9之间不重复的数字顷喊
我自己发现的简单方法:
1: Randomize
A = Fix(Rnd * 10)
B = Fix(Rnd * 10)
C = Fix(Rnd * 10)
D = Fix(Rnd * 10)
If A <> B And A <> C And A <> D And B <> C And B <>搭拦 D And C <> D Then
Else: GoTo 1
End If
生成知乎胡4个0~9之间不重复的数字顷喊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没装.net , 用vb写的,然后假装.net,你跑一下看看
Dim i As Integer
Dim j As Integer
Dim arr(10) As Integer
Dim iCount As Integer
Dim bFound As Boolean
Randomize()
Do While iCount < 10
i = CInt(Int((10 * Rnd()) + 1))
bFound = False
For j = 0 To 9
If arr(j) = i Then
bFound = True
Exit For
End If
Next
If Not bFound Then
arr(iCount) = i
iCount = iCount + 1
End If
Loop
For j = 0 To 9
Console.WriteLine( arr(j))
Next j
Dim i As Integer
Dim j As Integer
Dim arr(10) As Integer
Dim iCount As Integer
Dim bFound As Boolean
Randomize()
Do While iCount < 10
i = CInt(Int((10 * Rnd()) + 1))
bFound = False
For j = 0 To 9
If arr(j) = i Then
bFound = True
Exit For
End If
Next
If Not bFound Then
arr(iCount) = i
iCount = iCount + 1
End If
Loop
For j = 0 To 9
Console.WriteLine( arr(j))
Next j
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我不迟野枝明白你前边的Clnt是码敏什么意思
i=Int(Rnd*10+1)就能产生1-10中的任意值
j(11)=i
通过赋值放入j()中脊带
i=Int(Rnd*10+1)就能产生1-10中的任意值
j(11)=i
通过赋值放入j()中脊带
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询