VB自动生成1-100的随机数

Private Sub Command2_Click()
Dim a(100) As Integer
Dim i As Integer
Dim j As Integer
Dim k As Integer
Randomize Timer
For i = 1 To 100 '产生随机数
a(i) = Int(Rnd * 100) + 1
k = i
For j = 1 To k - 1 '如果相同则这个数不要 重新选取
If a(j) = a(k) Then i = i - 1
Next j
Next i
For i = 1 To 100
Text1.Text = Text1.Text & a(i) & vbCrLf
Next i

Open "d:\111.txt" For Output As #1

Print #1, Text1.Text & vbCrLf

Close #1
End Sub

你这个程序能够运行。
既能让1-100各个数字按随机顺序排列,也能把这个序列的各个数字保存到文件中。
只是,这个方法效率太低,应该用更好的算法提高效率。
有什么问题请留言。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-09-28
Dim MyValue
Randomize ' 对随机数生成器做初始化的动作。

MyValue = Int((100 * Rnd) + 1) ' 生成 1 到 100 之间的随机数值。
第2个回答  2019-09-29
这个程序是对的。只是程序的效率不高。生成100个随机整数,其中的语句If a(j) = a(k) Then i = i - 1竟然执行3万~8万多次。
其中的Text1控件,必须要设置初始值为空,而且设置Multyline属性为True。
第3个回答  2019-09-28
4个整数的排序,有使用单个变量和使用数组二种方法实现。
使用单个变量的方法:
#include<stdio.h>
int main()
{int a,b,c,d,t;
scanf("%d%d%d%d",&a,&b,&c,&d);
if(a>b){t=a;a=b;b=t;}
if(a>c){t=a;a=c;c=t;}
if(a>d){t=a;a=d;d=t;}
if(b>c){t=b;b=c;c=t;}
if(b>d){t=b;b=d;d=t;}
if(c>d){t=c;c=d;d=t;}

printf("%d %d %d %d\n",a,b,c,d);
return 0;
}

使用数组和循环的方法:
#include<stdio.h>
int main()
{int a[4],i,j,t;
for(i=0;i<4;i++) //读入4个数据
scanf("%d",&a[i]);
for(i=0;i<3;i++) //冒泡排序
for(j=0;j<3-i;j++)
if(a[j]>a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=t;}

for(i=0;i<4;i++) //输出4个数据
printf("%d ",a[i]);
printf("\n");
return 0;
}本回答被网友采纳
第4个回答  2019-09-29
rnd*100+1
rnd*100+1
rnd*100+1
相似回答