如何随机生成4个互不相同的数字

时间:2022-06-22 08:04:45
在0-N之间随机4个互不相同的数字,求一个效率比较高的方法。。。

9 个解决方案

#1


int n = 100;
var num = Enumerable.Range(1, n)
.Select(x => new { v = x, k = Guid.NewGuid().ToString() }).ToList()
.OrderBy(x => x.k)
.Select(x => x.v)
.Take(4).ToList();
foreach (var i in num)
{
Console.WriteLine(i);
}

#2


生成一个集合,随机索引号.提出该索引号的值,并将将其移除集合.重复4次

#3


int a=100;
Random random = new Random();
for(int i=1;i<6;i++){
 int num = random.Next(a);//还有其他的重载,自己看下那个合适自己用
Console.WriteLine(num);
}

#4


引用 1 楼  的回复:
int n = 100;
var num = Enumerable.Range(1, n)
.Select(x => new { v = x, k = Guid.NewGuid().ToString() }).ToList()
.OrderBy(x => x.k)
.Select(x => x.v)
.Take(4).ToList();
foreach (var i in num)
……



我想这么用,就是不要用foreach来循环输出出来,因为我想直接取着些数来赋值,比如随机出来的数字是1,2,3,4。。。我想直接就是a=1,b=2,c=3,d=4...

#5


int n = 100;
var num = Enumerable.Range(1, n)
.Select(x => new { v = x, k = Guid.NewGuid().ToString() }).ToList()
.OrderBy(x => x.k)
.Select(x => x.v)
.Take(4).ToList();
int a = num[0];
int b = num[1];
int c = num[2];
int d = num[3];

#6


4个插板random(N-3)

#7


Random(C(n,4)) 然后反转为对应的4个数,n比较大时需要考虑C(n,4) > long.Max的情况,不过n比较大时随意Random应该不容易出现碰撞。因此仅限于C(n,4) < int.max时,采用这种方法,否则直接Random,出现了碰撞就再多Random一次好了。

#8


。。。4个不同的数字。  你就直接把生成出来的数字放到一个集合里面。 然后判断里面是不是有重复的不就可以了。。。

#9


你随机生成一个数字  保存到数组里面 每次都去判断这个数字是否在数组里面就好了啊  如果不在就算了  当数组的长度到达3的时候、就说明已经产生了4个不重复的数字了 

#1


int n = 100;
var num = Enumerable.Range(1, n)
.Select(x => new { v = x, k = Guid.NewGuid().ToString() }).ToList()
.OrderBy(x => x.k)
.Select(x => x.v)
.Take(4).ToList();
foreach (var i in num)
{
Console.WriteLine(i);
}

#2


生成一个集合,随机索引号.提出该索引号的值,并将将其移除集合.重复4次

#3


int a=100;
Random random = new Random();
for(int i=1;i<6;i++){
 int num = random.Next(a);//还有其他的重载,自己看下那个合适自己用
Console.WriteLine(num);
}

#4


引用 1 楼  的回复:
int n = 100;
var num = Enumerable.Range(1, n)
.Select(x => new { v = x, k = Guid.NewGuid().ToString() }).ToList()
.OrderBy(x => x.k)
.Select(x => x.v)
.Take(4).ToList();
foreach (var i in num)
……



我想这么用,就是不要用foreach来循环输出出来,因为我想直接取着些数来赋值,比如随机出来的数字是1,2,3,4。。。我想直接就是a=1,b=2,c=3,d=4...

#5


int n = 100;
var num = Enumerable.Range(1, n)
.Select(x => new { v = x, k = Guid.NewGuid().ToString() }).ToList()
.OrderBy(x => x.k)
.Select(x => x.v)
.Take(4).ToList();
int a = num[0];
int b = num[1];
int c = num[2];
int d = num[3];

#6


4个插板random(N-3)

#7


Random(C(n,4)) 然后反转为对应的4个数,n比较大时需要考虑C(n,4) > long.Max的情况,不过n比较大时随意Random应该不容易出现碰撞。因此仅限于C(n,4) < int.max时,采用这种方法,否则直接Random,出现了碰撞就再多Random一次好了。

#8


。。。4个不同的数字。  你就直接把生成出来的数字放到一个集合里面。 然后判断里面是不是有重复的不就可以了。。。

#9


你随机生成一个数字  保存到数组里面 每次都去判断这个数字是否在数组里面就好了啊  如果不在就算了  当数组的长度到达3的时候、就说明已经产生了4个不重复的数字了