如何用C#随机输出一个4位数,且每个位数上的数值都不相同。

来源:百度知道 编辑:UC知道 时间:2024/06/19 09:04:09
先贴个我的方法,如果能改的话最好帮我改一下,不能的话就把详细的代码和解释写出来。谢谢啦~~~~~~~
int j = 0;
int i = 0;
while (j == 0)
{
Random rm = new Random();
i = rm.Next(1000, 9999);
string[] a = new string[4];
a[0] = i.ToString().Substring(0, 1);
a[1] = i.ToString().Substring(1, 1);
a[2] = i.ToString().Substring(2, 1);
a[3] = i.ToString().Substring(3, 1);
for (int m = 0; m < 4; m++)
{

for (int n = 0; n < 4; n++)
{
if (a[m] == a[n])
{ j = 0; }
else { j = 1; }
}

int a=-1,b=-1,c=-1,d=-1,ret;
Random rm = new Random();
a = rm.Next(1,9); //千位数
while(b==-1||b==a)
b=rm.Next(0,9);//百位数
while(c==-1||c==a||c==b)
c=rm.Next(0,9);
while(d==-1||d==a||d==b||d==c)
d=rm.Next(0,9);
ret= a*1000+b*100+c*10+d;

1.做一个char数组 char[] = { '0' , '1' ...}以此类推

2.随机数生成0到数组长度的索引位数字

3.取char数组中随机生成索引位数字

4.删除随机生成索引位数字

5.重复2-4步三次

6.拼接四次获得的char即可

记事本敲的,可能有小错误编译不过
int j = 0;
int i = 0;
while (j == 0)
{
Random rm = new Random();
i = rm.Next(1000, 9999);
string[] a = new string[4];
a[0] = i.ToString().Substring(0, 1);
a[1] = i.ToString().Substring(1, 1);
a[2] = i.ToString().Substring(2, 1);
a[3] = i.ToString().Substring(3, 1);
arraylist mylist=new arraylist();
mylist.add(a);
bool ifHave=false;
for(int i=0;i<4;i++)
{
if(m