vb 随机数分组,每组不重复
时间:2010-02-04
来源:互联网
'2.随机产生的数字不能重复
'3.根据输入的数字判断分多少个组
'4.每组随机产生的数字不能重复
'5.根据输入的数字判断每组产生多少个随机数
'6.用户可输入数字作为判断基数
'
'
'
'以下是我的代码,不能实现,麻烦高手帮帮忙
Private Sub Command1_Click()
Dim a(20) As Integer, b(20) As Integer, c(1 To 6) As Integer, d(1 To 7) As Integer
Dim change As Integer, zu As Integer, num As Integer
num = CInt(Text1.Text)
If num < 30 Then Label2(1).Caption = "至少30人"
If num >= 30 Then
If num Mod 6 = 0 Then
zu = 6
Label2(1).Caption = "共分" & zu & "个组"
Label17.Caption = ""
Label10.Caption = ""
End If
If num Mod 6 <> 0 Then
zu = 7
Label2(1).Caption = "共分" & zu & "个组"
End If
End If
Dim mrs As Integer
'If zu = 6 Then
mrs = num / 6
Randomize '初始化随机数
For i = 1 To mrs
1
'ReDim a(i)
'Dim c
'c = num - 1
a(i) = Int(Rnd * num + 1) '生成1-num的随机数
For j = 1 To i - 1 '把a(i) 跟a(i)前的数相比
If a(i) = a(j) Then GoTo 1 '如相同则重新赋值
Next j
Next i
'按降序排列
For i = 1 To mrs
For j = 1 To i
If a(i) < a(j) Then '把a(i)和后面的数比
change = a(i) '发现有大的则交换
a(i) = a(j)
a(j) = change
End If
Next j
Next i
Label4.Caption = ""
For i = 1 To mrs
Label4.Caption = Label4.Caption & a(i) & Chr(13)
Next i
'ReDim b(i)
'Dim nu As Integer
'For i = 1 To num
'a(nu) = i
'Next i
'b(nu) = a(nu) - a(i)
End Sub
Private Sub Form_Load()
Timer1.Interval = 1000
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
Label3.Caption = Format(Now, "YYYY年MM月DD日") & Chr(13) & Chr(13) & Format(Now, "AMPM(hh:mm:ss)")
End Sub
作者: johnmo 发布时间: 2010-02-04
就像洗牌一样,应该符合你的需求。
作者: Tiger_Zhao 发布时间: 2010-02-04
作者: johnmo 发布时间: 2010-02-04
作者: guyehanxinlei 发布时间: 2010-02-04
Dim a As Collection Private Sub Command1_Click() Dim b() Dim i, j Set a = New Collection For i = 1 To 10000 a.Add i Next For j = O To Val(Text1) For i = O To Val(Text1) Randomize MyVal = Int((a.Count * Rnd) + 1) ReDim Preserve b(i) b(i) = a.Item(MyVal) a.Remove MyVal Debug.Print Format(b(i), "0000") Next Next End Sub Private Sub Form_Load() Text1.Text = 9 '默认每组10个数据 Text2.Text = 20 '默认抽20组 End Sub
作者: SYSSZ 发布时间: 2010-02-04
作者: SYSSZ 发布时间: 2010-02-04
'此程序相当于摇号程序,就是大家参加游戏,每人一个号,然后随机分组,参加游戏的人数就是用户输入的数
'我用的是vb6.0企业精简版
作者: johnmo 发布时间: 2010-02-05
作者: yiguangqiang88 发布时间: 2010-02-05
VB code
Private Sub Command1_Click()
Dim a() As Byte, Zu As Byte
Dim Num As Byte
Num = Val(Text1)
ReDim a(Num)
Dim i As Byte, n As Byte
For i = 1 To Num
ReMack: Randomize (Timer) '初始化随机数
a(i) = Int(Rnd * Num + 1) '生成1-num不重复的随机数
For n = 1 To UBound(a)
If a(i) = a(n) And i <> n Then GoTo ReMack
Next
' Debug.Print a(i)
Next
If Num Mod 6 = 0 Then
Zu = 6
Me.Caption = "共分" & Zu & "个组,每组" & Num \ 6 & "人"
For n = 0 To Zu - 1
For i = 1 To Num
If i Mod 6 = n Then Debug.Print "第" & n & "组:" & a(i)
Next
Next
Else
Zu = 7
If Num Mod 7 = 0 Then
Me.Caption = "共分 7 个组,每组" & Num \ 7 & "人"
For n = 0 To Zu - 1
For i = 1 To Num
If i Mod 7 = n Then Debug.Print "第" & n & "组:" & a(i)
Next
Next
End If
If Num Mod 7 <> 0 Then
Me.Caption = "共分 7 个组,前6组" & Num \ 6 & "人" & "第七组" & Num Mod 6 & "人"
For n = 0 To Zu - 1
For i = 1 To Num
If i Mod 7 = n Then Debug.Print "第" & n & "组:" & a(i)
Next
Next
End If
End If
End Sub
不知道怎么样?
作者: yiguangqiang88 发布时间: 2010-02-05
作者: yiguangqiang88 发布时间: 2010-02-05
自己 Google 一下。
这个算法应该最符合你的需求了。
作者: Tiger_Zhao 发布时间: 2010-02-05
不重复的随机数好生成。
分几组也不难(根据什么分几组?定死的分6组或7组?)。
每组生成几个随机也不难(根据什么判断每组生成几个随机数,每组根据随机数确定的?)。
每组最后都要有具体的随机数吗,每组之间随机数是否可以重复?
我大体给你缕一下思路,你看对不对:
1)根据用户输入的一个数判断(x mod 6)分成6组或是7组,要先分好组。
2) 根据分成的组每组用随机数确定生成几个随机数,你的程序的一部分就行。
3)根据2)给每组生成具体随机数,你的程序的一部分就行。
作者: chinaboyzyq 发布时间: 2010-02-05
该回复于2010-03-12 11:38:14被版主删除
- 对我有用[0]
- 丢个板砖[0]
- 引用
- 举报
- 管理
- TOP
|
#13楼 得分:0回复于:2011-08-13 23:52:18
|
作者: yk84 发布时间: 2010-03-11
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28