List<int> arr = Enumerable.Range(0, 11).ToList<int>(); List<int> result = new List<int>(); Random ran = new Random(); for (int i = 0; i < 4; i++) { int temp = ran.Next(arr.Count); result.Add(arr[temp]); arr.RemoveAt(temp); }
IList<int> list = new List<int>(); public void ProduceRandom() { while (true) { Random rd = new Random(); int a = rd.Next(10); if (list.Contains(a)) continue; list.Add(a); if (list.Count == 4) break; } }
static void Main(string[] args) { List<int> list = new List<int>(); for (int i = 0; i <= 10; i++) { list.Add(i); } for (int i = 0; i < 4; i++) { int index = r.Next(0, list.Count); Console.WriteLine(list[index]); list.Remove(index); } Console.ReadKey(); }
static Random r = new Random();
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { int[] a = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };//定义10个数 List<int> mlist=new List<int>(a);//装入LIST,便于删除操作 for (int m = 0; m < 4; m++)//m是需要输出的个数,不能超过10 { int b = mlist.Count;//随即删除list的元素,保证不重复 Random r = new Random(); int k = r.Next(b); Console.WriteLine(mlist[k]); mlist.Remove(k); } } } }
1~10取不同的值: int[] temp = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; int[] Block = new int[9] Random rnd = new Random(); int n; int j = 8; for (int i = 0; i <9; i++) { n = rnd.Next(j); Block[i] = temp[n]; temp[n] = temp[j]; j--; }
var num = Enumerable.Range(1, 10) .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); }
啧啧,楼上的能不能给些linq的学习链接?太牛了,什么都能用linq
似乎少了一个对 r的定义: Random r = new Random();另外,得到的结果还可能存在重复的情况
List<int> result = new List<int>();
Random ran = new Random();
for (int i = 0; i < 4; i++)
{
int temp = ran.Next(arr.Count);
result.Add(arr[temp]);
arr.RemoveAt(temp);
}
IList<int> list = new List<int>();
public void ProduceRandom()
{
while (true)
{
Random rd = new Random();
int a = rd.Next(10);
if (list.Contains(a))
continue; list.Add(a);
if (list.Count == 4)
break;
}
}
{
List<int> list = new List<int>();
for (int i = 0; i <= 10; i++)
{
list.Add(i);
}
for (int i = 0; i < 4; i++)
{
int index = r.Next(0, list.Count);
Console.WriteLine(list[index]);
list.Remove(index);
}
Console.ReadKey();
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int[] a = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };//定义10个数 List<int> mlist=new List<int>(a);//装入LIST,便于删除操作 for (int m = 0; m < 4; m++)//m是需要输出的个数,不能超过10
{
int b = mlist.Count;//随即删除list的元素,保证不重复
Random r = new Random();
int k = r.Next(b);
Console.WriteLine(mlist[k]);
mlist.Remove(k);
} }
}
}
int[] Block = new int[9]
Random rnd = new Random();
int n;
int j = 8;
for (int i = 0; i <9; i++)
{
n = rnd.Next(j);
Block[i] = temp[n];
temp[n] = temp[j];
j--;
}
每执行一次,都删除调LIST元素,下一次随机的时候,这个元素都不存在了,一定不会重复。
.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);
}
似乎少了一个对 r的定义: Random r = new Random();另外,得到的结果还可能存在重复的情况