VB 生成不重复数字
作者&投稿:时虎 (若有异议请与网页底部的电邮联系)
Private Sub Command2_Click()
Dim a(1 To 5) As Integer, i, j, s As String
For i = 1 To 5
a(i) = Int(10 * Rnd) '生成[0,9]之间的随机数字
For j = 1 To i - 1
If a(i) = a(j) Then i = i - 1: Exit For '将生成的随机数字与已有的随机数字比较,若出现相同的,该数剔除,返回重新生成
Next
Next
For i = 1 To 5
Print a(i);
s = s & a(i)
Next
Print
Print s
End Sub
Private Sub Command1_Click()
Randomize'这个是必须的.
Text1.Text = CStr(Int(((999999999# - 100000000#) * Rnd()) + 100000000#)) '9位随机数
End Sub
随机生成9位数组合不重复...
Private Sub Command1_Click()
Randomize'这个是必须的.
Text1.Text = CStr(Int(((9# - 1#) * Rnd()) + 1#)) '1-9位随机数
End Sub
这个是随机从1-9抽取一个数
Private Sub Command1_Click()
Open "c:\test.txt" For Output As #1
For i = 12345 To 456789
p = 0
For k = 1 To 6
s = InStr(1, Format(i, "000000"), Mid(Format(i, "000000"), k, 1), vbBinaryCompare)
Do While s > 0
p = p + 1
s = InStr(s + 1, Format(i, "000000"), Mid(Format(i, "000000"), k, 1), vbBinaryCompare)
Loop
Next k
DoEvents
If p = 6 Then Print #1, Format(i, "000000"): Command1.Caption = Format(i, "000000")
Next i
Close #1
End Sub
在我的破电脑上 运行全过程耗时55秒 最后生成的结果文件 C:\test.txt 大小为532KB
如果中途要暂停 那就把变量i写进另外一个文件 下次恢复的时候 从i开始循环起 就可以了 不要从12345开始
如果程序代码改成这样的话
Private Sub Command1_Click()
Open "c:\test.txt" For Output As #1
For i = 12345 To 456789
p = 0
w = Format(i, "000000")
For k = 1 To 6
s = InStr(1, w, Mid(w, k, 1), vbBinaryCompare)
Do While s > 0
p = p + 1
s = InStr(s + 1, w, Mid(w, k, 1), vbBinaryCompare)
Loop
Next k
If p = 6 Then Print #1, w
Next i
Close #1
MsgBox "计算完成,请查看c:\test.txt"
End Sub
那只需要 4~7秒的时间 就可以计算完成了
定义一个变量 j 保存起始数,也就是你说的上次的数据,
程序运行前或初始化过程中,读取记事本数据,如果有数据,则对j赋值记事本数据,如果没有,则对j赋值12345,后面就简单了
for i as int = j to 456789
i++
next i
你需要的是全排列?
乾谭智托: 产生不重复的,需要在程序里保存一个已经生成的数字列表.每次随机生成的时候就在之中搜索有无同样的,如果有,就重新生成. 例: 假如要生成5个数字,则 include <time.h> include <stdlib.h> int numgen[5] = {0, 0, 0, 0, 0}; int index = 0; bool...
仙游县19470455612: 如何用VB生成随意不重复的数字 - ?
乾谭智托: Private Sub Command2_Click() Dim a(1 To 5) As Integer, i, j, s As String For i = 1 To 5 a(i) = Int(10 * Rnd) '生成[0,9]之间的随机数字 For j = 1 To i - 1 If a(i) = a(j) Then i = i - 1: Exit For '将生成的随机数字与已有的随机数字比较,若出现相同的,该数剔除,返回重新生成 Next Next For i = 1 To 5 Print a(i); s = s & a(i) Next Print Print s End Sub
仙游县19470455612: 用VB编一组不重复数字 - ?
乾谭智托: Static x(101) As Integer, a% Private Sub Command1_Click() Randomize If a <= 100 Then y = Int(Rnd * 100) + 1 For z = 1 To a If x(z) = y Then y = Int(Rnd * 100) + 1 z = 1 End If Next x(a) = y Label1.Caption = y a = a + 1 Else a = 0 y = Int(Rnd * 100) ...
仙游县19470455612: VB中如何让输入的数字不重复 - ?
乾谭智托: 先把输入的数字转成字符串 函数名str() 然后用4个变量取值取值字串的四位 取位的函数名mid(字串的变量,起始位,长度) 然后通过IF语句比较4个变量不两两相等(可以用a0来表示a不等于0)
仙游县19470455612: VB中如何实现随机数不重复数字? - ?
乾谭智托: 用字典对象保存 随机数,就不会重复123456789101112131415DimDic AsObject SetDic = CreateObject("Scripting.Dictionary") Randomize OnErrorResumeNext Fori = 1 To50 Dic.Add Int(Rnd * 50), "" Nextik = Dic.keysFori = 0 ToDic.Count - 1 Print i, k(i)Nexti
仙游县19470455612: vb随机数产生但不重复数字 - ?
乾谭智托: Private Sub Command1_Click() Text1 = rndx End Sub Function rndx() As Integer Dim i, j, k As Integer i = Int(Rnd() * 10) j = Int(Rnd() * 10) Do While j = i j = Int(Rnd() * 10) DoEvents Loopk = Int(Rnd() * 10) Do While k = i Or k = j k = Int(Rnd() * 10) ...
仙游县19470455612: 怎么用VB产生一个四个不重复的数 - ?
乾谭智托: Private Sub Command1_Click()Dim a(3)For i = 0 To 3RE:a(i) = Int(Rnd * 100) + 1If i > 0 ThenFor j = 0 To i - 1If a(i) = a(j) Then GoTo RENextEnd IfNext For i = 0 To 3 Print Str(a(i))NextEnd Sub
仙游县19470455612: VB 生成不重复数字 - ?
乾谭智托: 新建一个VB工程 添加一个Command按钮控件 使用下面的代码即可得到你想要的结果文件 Private Sub Command1_Click() Open "c:\test.txt" For Output As #1 For i = 12345 To 456789 p = 0 For k = 1 To 6 s = InStr(1, Format(i, "000000"), Mid...
仙游县19470455612: vb怎么产生不重复随机数 - ?
乾谭智托: 使用Randomize 语句,初始化随机数生成器.Randomize 语句示例 本示例用 Randomize 语句初始化随机数生成器.由于忽略了数值参数, 所以 Randomize 用 Timer 函数的返回值作为新的随机数种子值.Dim MyValue Randomize ' 对随机数生成器做初始化的动作.MyValue = Int((6 * Rnd) + 1) ' 生成 1 到 6 之间的随机数值.
仙游县19470455612: VB随机生成1不重复1至10以内整数 - ?
乾谭智托: Private Sub Command1_Click() Randomize If List1.ListCount >= 1 Then List1.ListIndex = Int(Rnd * List1.ListCount) Text1.Text = Text1.Text & List1.Text & vbCrLf List1.RemoveItem List1.ListIndex End If End Sub Private Sub Form_Load() List1.Visible = False For i = 1 To 10 List1.AddItem i Next i End Sub