如题从1-35个数中随机选出5个,要求不重复,从小到大排序我老郁闷了 呵呵~~ 怎么用 C# 写, 朋友帮帮忙哈
解决方案 »
- 如何获取服务器上json的值
- 无法将类型为“THUNDERAGENTLib.AgentClass”的 COM 对象强制转换为接口类型
- c++里面的dword类型在C#里面对应的是什么类型
- 高手請幫我
- mobile页面编程List绑定数据源的问题
- 急!!!!!关于Treeview的问题
- 我感觉数据绑定的"数据窗口"很不好用,很麻烦
- C# 在主窗体中有一个panel控件,在panel的类代码中,定义了函数Refresh(),在主窗体的代码中this.panel.Refresh()是什么效果
- 请问怎么样能够得到鼠标的坐标信息?
- 如何利用WMI捕获网卡移除的消息
- md5加密字符串问题
- C#中打印和打印預覽問題
List<int> list = new List<int>(5);
for (int i = 0; i < 5; i++)
{
int temp = random.Next(1, 35);
if (list.Contains(temp)) { --i; continue; }
else list.Add(temp);
}
Random random = new Random(unchecked((int)DateTime.Now.Ticks));
//定义一个随机数,参数是种子,其实可以不必要这个.要也可以,可以让随机更随机!
List<int> list = new List<int>(5);
//定义一个类型为int的泛型 List
//泛型真好用!
for (int i = 0; i < 5; i++)
//其实这一行根据 C++ Primer里作者说的,改为
// for (int i = 0; i < 5; ++i)
//效率相对之前的写法要高
//另外, C++ Primer建议在这种情况下用 i != 5会更好,原因我不明白,书里也没写,偶也没去深究,对不对也不知道.
{
int temp = random.Next(1, 35);
//产生一个随机数,取值范围是 [1,35)
if (list.Contains(temp))
//判断列表里包含 temp 这个随机数
{ --i;
//如果是,将 i -1,即"回滚循环"
continue;
//继续下一条循环,以下代码
} else list.Add(temp);
//否则添加随机数 temp到列表
//其实else在这里可以不要 }
Random random = new Random(unchecked((int)DateTime.Now.Ticks));
List<int> arr = new List<int>(35);
List<int> list = new List<int>(5);
for (int i = 0; i < 35; i++)
{
arr.Add(i + 1);
}
for (int i = 0; i < 5; i++)
{
int temp = random.Next(0, 34-i);
list.Add(arr[temp]);
arr.Remove(arr[temp]);
}
for (int i = 0; i < 5; i++)
{
Console.WriteLine(list[i]);
}
在vicqqq的基础上,改进了一下下
List<int> numberGroup = new List<int>(capacity);
Random rnd = new Random();
int temp, i;
for (i = 0; i != 5; ++i)
{
temp = rnd.Next(1, 36);
if (numberGroup.Contains(temp))
--i;
else
numberGroup.Add(temp);
}
for (i = 0; i != capacity; ++i)
{
for (int j = i + 1; j != capacity; ++j)
{
if (numberGroup[i] > numberGroup[j])
{
temp = numberGroup[i];
numberGroup[i] = numberGroup[j];
numberGroup[j] = temp;
}
}
}
{
Random rd = new Random(~unchecked((int)DateTime.Now.Ticks));
List<int> lit = new List<int>(5);
for (int i = 0; i < 5; i++)
{
int intT = rd.Next(1, 35);
if (lit.Contains(intT))
{
--i;
continue;
}
else
{
lit.Add(intT);
}
}
lit.Sort(); for (int i = 0; i < 5; i++)
{
Console.WriteLine(lit[i].ToString());
}
}
List<int> vList = new List<int>();
for (int i = 1; i <= 35; i++) vList.Add(i); // 得到全部1-35的数Random vRandom = new Random();
List<int> vReturn = new List<int>();
for (int i = 1; i <= 5; i++)
{
int j = vRandom.Next(vList.Count); // 从列表中随机抽取一个
vReturn.Add(vList[j]);
vList.RemoveAt(j); // 从列表中移除抽取的数
}
vReturn.Sort(); // 排序
foreach (int i in vReturn) Console.WriteLine(i); // 输出
-------
伴水_清洁工_
static void Foo()
{
var values = GetRandomValues().Distinct().Take(5).OrderBy(i => i);
foreach (var value in values)
Console.WriteLine(value);
}static IEnumerable<int> GetRandomValues()
{
var r = new Random();
while (true)
yield return r.Next(1,36);
}
修改一下:
var values = GetRandomValues().Distinct().Take(5).OrderBy(i => i).Reverse();