VB RND 随机函数问题 10
text1.text中有10-20个不同的姓名如“张三李四王五。。。。。”按下command后在text2.text中随机显示六个不同的姓名要怎么做求代码最好在语句后面加...
text1.text中有10-20个不同的姓名 如“张三 李四 王五。。。。。”按下command后 在text2.text中 随机 显示六个不同的姓名 要怎么做
求代码 最好在语句后面加上解释 要求每按一次command就显示六个名字 每次显示的六个名字里不能有重复
hekcn的 Text1.Text = Text1.Text & x(100 * Rnd) 不行 有重复 展开
求代码 最好在语句后面加上解释 要求每按一次command就显示六个名字 每次显示的六个名字里不能有重复
hekcn的 Text1.Text = Text1.Text & x(100 * Rnd) 不行 有重复 展开
3个回答
展开全部
Private Sub Form_Load()
Text1.Text = "秦桧 贾以道 小德张 李莲英 李林甫 杨国忠 魏忠贤 高俅 童贯 陈世美 潘仁美 丁春秋 西门庆 楚留香 苏蓉蓉 郭靖 黄蓉 快活王 项少龙 杨过 小龙女 尹志平 展昭 包拯 公孙策 张龙 赵虎 王朝 马汉 白玉堂 褒姒 妲己 杨玉环 貂蝉 王昭君 蔡文姬"
End Sub
Private Sub Command1_Click()
Dim tNameText As String '名字列表(文本形式)
Dim tNameList() As String '名字列表,字符串数组
Dim tNameCount As Long '名字的数量
Dim tNameLength As Long '名字列表的最大下标(tNameCount-1)
Dim tNameIndex As Long '当前索引
Dim tSwapIndex As Long '交换索引
Dim tTempValue As String
Dim tOutCount As Long '输出姓名数量
Dim tOutLength As Long '输出最大下标
tOutCount = 6
tOutLength = tOutCount - 1
'输入字符串分割数组
tNameText = Text1.Text
tNameList() = Split(tNameText, " ") '分割输入列表为字符串数组,间隔符为空格
'给原始姓名列表乱序
tNameCount = UBound(tNameList()) + 1 '取名字数量
tNameLength = tNameCount - 1
For tNameIndex = 0 To tNameLength '如果改成tOutLength则是快速算法
tSwapIndex = Int(Rnd * tNameCount) '取小于tNameCount的随机数(在0到tNameLength之间)
'交换tNameList(tNameIndex)和tNameList(tSwapIndex)的值
tTempValue = tNameList(tNameIndex)
tNameList(tNameIndex) = tNameList(tSwapIndex)
tNameList(tSwapIndex) = tTempValue
Next
'摘取指定数量的元素
ReDim Preserve tNameList(tOutLength) 'Preserve关键字表示改变数组长度的时候保留原有内容。本程序这句的作用是缩短数组。
'合并输出列表
tOutText = Join(tNameList(), " ") '合并字符串数组为字符串,间隔符为空格
'输出
Text2.Text = tOutText
End Sub
Text1.Text = "秦桧 贾以道 小德张 李莲英 李林甫 杨国忠 魏忠贤 高俅 童贯 陈世美 潘仁美 丁春秋 西门庆 楚留香 苏蓉蓉 郭靖 黄蓉 快活王 项少龙 杨过 小龙女 尹志平 展昭 包拯 公孙策 张龙 赵虎 王朝 马汉 白玉堂 褒姒 妲己 杨玉环 貂蝉 王昭君 蔡文姬"
End Sub
Private Sub Command1_Click()
Dim tNameText As String '名字列表(文本形式)
Dim tNameList() As String '名字列表,字符串数组
Dim tNameCount As Long '名字的数量
Dim tNameLength As Long '名字列表的最大下标(tNameCount-1)
Dim tNameIndex As Long '当前索引
Dim tSwapIndex As Long '交换索引
Dim tTempValue As String
Dim tOutCount As Long '输出姓名数量
Dim tOutLength As Long '输出最大下标
tOutCount = 6
tOutLength = tOutCount - 1
'输入字符串分割数组
tNameText = Text1.Text
tNameList() = Split(tNameText, " ") '分割输入列表为字符串数组,间隔符为空格
'给原始姓名列表乱序
tNameCount = UBound(tNameList()) + 1 '取名字数量
tNameLength = tNameCount - 1
For tNameIndex = 0 To tNameLength '如果改成tOutLength则是快速算法
tSwapIndex = Int(Rnd * tNameCount) '取小于tNameCount的随机数(在0到tNameLength之间)
'交换tNameList(tNameIndex)和tNameList(tSwapIndex)的值
tTempValue = tNameList(tNameIndex)
tNameList(tNameIndex) = tNameList(tSwapIndex)
tNameList(tSwapIndex) = tTempValue
Next
'摘取指定数量的元素
ReDim Preserve tNameList(tOutLength) 'Preserve关键字表示改变数组长度的时候保留原有内容。本程序这句的作用是缩短数组。
'合并输出列表
tOutText = Join(tNameList(), " ") '合并字符串数组为字符串,间隔符为空格
'输出
Text2.Text = tOutText
End Sub
展开全部
就这个思路吧,自己加入重复判断就可以了。
Option Explicit
Dim x(99) As String
Private Sub Form_Load()
x(0) = "张0"
x(1) = "李1"
x(2) = "王2"
'.........给其它变量赋值
x(99) = "胡99"
End Sub
Private Sub Command1_Click()
Dim i As Long
Text1.Text = ""
For i = 0 To 6
Text1.Text = Text1.Text & x(100 * Rnd)
Next
End Sub
Option Explicit
Dim x(99) As String
Private Sub Form_Load()
x(0) = "张0"
x(1) = "李1"
x(2) = "王2"
'.........给其它变量赋值
x(99) = "胡99"
End Sub
Private Sub Command1_Click()
Dim i As Long
Text1.Text = ""
For i = 0 To 6
Text1.Text = Text1.Text & x(100 * Rnd)
Next
End Sub
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把姓名保存到数组中,用随机函数进行取值,总共取六次即可,同时取值后要判断产生的随机数是否已经取过,避免重复。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询