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()数组中,要求不能出现重复得数字
不知道怎么实现类似于抽签的功能,希望高手指教!非常之感谢
展开
 我来答
lzh741206
2008-04-17 · TA获得超过1192个赞
知道大有可为答主
回答量:1929
采纳率:100%
帮助的人:2791万
展开全部
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lanr527
2008-04-17 · 知道合伙人互联网行家
lanr527
知道合伙人互联网行家
采纳数:511 获赞数:5121
平面设计师、建筑建模师、动画设计师、网络工程师认证持有者。

向TA提问 私信TA
展开全部
我有个思路,但是我不是做程序的,不知道可行不。

1,先创建2个数组。A数组装数字,0-10;B数组为空。
2,随即取数字,作为A数组的下标,把该数字传递给B数组,作为B0.
3,删掉A数组中该者闷下标数字,并且把该下标以后桐世的数字的下标依次减1.
4,重复2-3.

呵呵,只是自己的想法,局嫌肢也不知道好使不。。。。呵呵。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友d34246235
2008-04-25 · TA获得超过156个赞
知道答主
回答量:19
采纳率:50%
帮助的人:17.6万
展开全部
不知道是不是这个
我自己发现的简单方法:
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之间不重复的数字顷喊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
murphylau
2008-04-17 · TA获得超过435个赞
知道小有建树答主
回答量:547
采纳率:0%
帮助的人:847万
展开全部
没装.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
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
赂扇亩材抢鹊7m
2008-04-17
知道答主
回答量:48
采纳率:0%
帮助的人:25.6万
展开全部
我不迟野枝明白你前边的Clnt是码敏什么意思
i=Int(Rnd*10+1)就能产生1-10中的任意值
j(11)=i
通过赋值放入j()中脊带
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式