C# 如何生成不重复的1-100随机数。

如题所述

有两种思路:1、随机生成一个1-100的数,然后判断重复,如果重复再生成一次;
2、创建一个数组,元素内容为1-100,对元素随机排序。
请参考下面的代码
public void GenerateRandomNums()
{
List list = new List();
Random rand = new Random();
int value;
while (true)
{
if (list.Count == 20)
{
Console.WriteLine("U should get the 20 random numbers. ");
break;
}
value = rand.Next(1, 21);
if (!list.Contains(value))
{
list.Add(value);
}
}
foreach (int temp in list)
{
Console.WriteLine("Num:{0}.", temp);
}
}

第二种思路:
int[] a = { 1, 2, 4, 5, 3, 6, 7, 8 };
int[] b = a.OrderBy(x => Guid.NewGuid()).ToArray();
foreach (int v in b)
Console.WriteLine(v);
Console.ReadKey();
温馨提示:内容为网友见解,仅供参考
第1个回答  2017-02-21
            Random r = new Random();
            int[] nums = Enumerable.Range(1, 100)
                .OrderBy(x => r.Next()).ToArray();
            foreach (int n in nums)
                Console.WriteLine(n);

本回答被提问者采纳
第2个回答  2017-12-11
x是什么?

C# 如何生成不重复的1-100随机数。
有两种思路:1、随机生成一个1-100的数,然后判断重复,如果重复再生成一次;2、创建一个数组,元素内容为1-100,对元素随机排序。请参考下面的代码 public void GenerateRandomNums(){ List list = new List();Random rand = new Random();int value;while (true){ if (list.Count == 20){ ...

急急, c#产生随机数,一到一百的不重复的
Random random = new Random();int[] array = new int[要生成的随机数个数];for(int i = 0; i < array.Length; i++){ int x = Convert.ToInt32(random.Next(1, 100));for(int j = 0; j < i; j++){ if(x == array[j]){ x = Convert.ToInt32(random.Next(1, 100))...

c# 问如何产生100个1-100范围内的数
return 系统随机数.Next(maxNum + 1); } \/\/\/ 生成不大于该值的随机非负整数,该随机数范围包括最大值 public static int Rnd(this int i) { return 系统随机数.Next(i + 1); } \/\/\/ 生成一个指定范围的随机整数,且必须整除aliquot,该随机数范围包括最小值和最大值 \/\/\/ 最小值 \/\/\/ 最大值 publi...

C#中怎么获取1到100的随机数
第一种方法不指定随机种子,系统自动选取当前时间作为随机种子:Random ro = new Random();第二种方法可以指定一个int型参数作为随机种子:int iSeed=10;Random ro = new Random(10);long tick = DateTime.Now.Ticks;Random ran = new Random((int)(tick & 0xffffffffL) | (int) (tick >> ...

C# 如何产生100以内不重复的随机数?
可以考虑先把这100个数放在一个数组内,每次随机取一个位置(第一次是1-100,第二次是1-99,...),将该位置的数与最后一个位置的数对调就可以了。using System;using System.Collections.Generic;using System.Text;namespace ConsoleApplication1 { class Program { static void Main(string[] ...

c#怎么实现取1-100之间的随机数
Random r = new Random();int num = r.NextInteger(1,101);这样随机数才是1-100.那个函数是不包括上限在内的

C# 中怎样随机输出从0~100的数字且不重复?(不用数组)
static void Main(string[] args){ List<int> numbersToSelect = new List<int>();for (int i = 0; i < 100; i++){ numbersToSelect.Add(i);} for (int j = 99; j >= 0; j--){ Random random = new Random();\/\/ 保证index落在List大小范围之内 int index = random.Next(...

用C# 随机产生20个位于1-100之间的数,并且产生的数各不相同
Response.Write("RoInt2="+RoInt2+"");\/\/ 方法3:指定最大值非负随机整数 String RoInt3=ro.Next(10).ToString();Response.Write("RoInt3="+RoInt3+"");\/\/ 方法4:生成0.0和1.0之间的随机数 String RoDouble=ro.NextDouble().ToString();Response.Write("RoDouble="+RoDouble+"");你...

C#用timer控件实现1~100随机数抽奖,已经抽中的不参与下一次循环,求代码...
直接Random.Next(1, 101)可产生随机数,用一个List<int>存起来,每次新随机就会去这个List中找,如果找到就再随机,自到随机出新的数。1、放一个TextBox框、要把MultiLine属性改成True。(模拟输出结果)2、放个Timer 3、放个Button。4、定义两个全局对象 int inTimer = 0; \/\/原子锁对象List...

用C#编写程序,生成一个长度为100的数组,然后向数组中随机插入1~100之间...
arr[i] = temp;break;} else { temp = r.Next(1, 100);} } System.Console.WriteLine(arr[i]);} System.Console.Read();这个算法效率会有点低,为了防止重复,循环越到后面尝试的随机数会越来越多。可以改为多创建一个值为1~100的数组,随机取里面的值放到新数组,然后删去,这个就自己去...

相似回答