注册 登录
编程论坛 ASP.NET技术论坛

[求助]关于随机数的问题

tan_owen 发布于 2007-04-18 22:39, 1162 次点击
我在做随机数的时候想要抽取多个数字比如13个,但做出来后只能抽取一个,代码如下:
Dim a As New Random '定义一个随机数类
Dim tmp As Int32
Dim h As New Hashtable
While h.Count < 14
tmp = a.Next(1, 54)
If Not h.Contains(tmp) Then
h.Add(tmp, tmp)
Label1.Text = tmp
End If
End While
这个代码该怎么改才对
11 回复
#2
冰镇柠檬汁儿2007-04-19 09:32
Dim a As New Random '定义一个随机数类
Dim tmp As Int32
Dim h As New Hashtable
While h.Count < 14
tmp = a.Next(1, 54)
If Not h.Contains(tmp) Then
h.Add(tmp, tmp)
Label1.Text = tmp
End If
End While

关键是在我注红的地方,每次都覆盖了,其实是有13个随机数,你应该写成:
Label1.Text = Label1.Text + " " + tmp
#3
tan_owen2007-04-19 12:54
我把代码改成Label1.Text=Label1.Text + "  " + tmp后出现异常(从字符串“  ”到类型“Double”的转换无效。)
#4
tan_owen2007-04-19 13:00

应该改为Label1.Text=Label1.Text & " " & tmp

#5
skyland842007-04-19 13:05
tmp  转换成字符串 后在加上去~!
#6
冰镇柠檬汁儿2007-04-19 13:35
以下是引用tan_owen在2007-4-19 13:00:06的发言:

应该改为Label1.Text=Label1.Text & " " & tmp

我不是研究VB的,不好意思,没注意

#7
tan_owen2007-04-19 14:38

在抽取了13个数字后,再抽取13个数字,那么tmp = a.Next(1, 54)应改为什么

#8
bygg2007-04-19 15:38
这得看你要不要出现相同的数了.如果需要,就得把已经抽出的数排除.
#9
tan_owen2007-04-19 15:44
再抽取的时候,不要相同的数,也不能和上次抽取的有相同的数
#10
tan_owen2007-04-19 22:13
我重写了一个代码:
Dim a(52), b(4, 13) As Integer
Dim i, j, t As Integer
For i = 1 To 52
a(i) = i
Next
Randomize(Timer)
For i = 1 To 4
For j = 1 To 13
t = Int(52 * Rnd()) + 1
Do While a(t) = 0
t = Int(52 * Rnd()) + 1
Loop
Do While a(t) = 0
t = Int(52 * Rnd()) + 1
Loop
b(i, j) = a(t) : a(t) = 0
Next j
Next i
For i = 1 To 4
For j = 1 To 13
Response.Write(b(i, j) & " ")
Next j
Next i
可以随机出现52个数字,可我想让它出现4行,每行13个数字,不知道是哪错了该怎么改

[此贴子已经被作者于2007-4-19 22:30:04编辑过]

#11
冰镇柠檬汁儿2007-04-20 09:14
这个程序很麻烦吗,就用你原有的程序

Dim a As New Random '定义一个随机数类
Dim tmp As Int32
Dim h As New Hashtable
While h.Count < 53
tmp = a.Next(1, 54)
If Not h.Contains(tmp) Then
h.Add(tmp, tmp)
if h.Count % 13 = 0
Label1.Text = Label1.Text & "<br>"
Label1.Text = Label1.Text & " " & tmp
End If
End While

[此贴子已经被作者于2007-4-20 9:15:08编辑过]

#12
tan_owen2007-04-20 17:36
解决了,谢谢
1