VB 生成不重复数字

用FOR生成
012345
012346
012347
------
456789
每位不重复
我想生成的中途程序中断后,可以继续接成生成。
我认为可以把中断时的数据存入记事本,然后重起程序时从记事本读上次的数据。但这样的话不知FOR该怎么写。
写好后加分
一楼的不行的。会成生比如像233444这种有重复数字的。我是需要无重复数字的,谢谢

新建一个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(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秒的时间 就可以计算完成了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-02-18
定义一个变量 j 保存起始数,也就是你说的上次的数据,
程序运行前或初始化过程中,读取记事本数据,如果有数据,则对j赋值记事本数据,如果没有,则对j赋值12345,后面就简单了
for i as int = j to 456789
i++
next i
第2个回答  2009-02-18
你需要的是全排列?