从1-35个数中随机选出5个,要求不重复,从大到小排序

新亿 2007-12-22 04:46:38
如题

从1-35个数中随机选出5个,要求不重复,从小到大排序

我老郁闷了 呵呵~~ 怎么用 C# 写, 朋友帮帮忙哈
...全文
4357 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
新亿 2008-01-27
  • 打赏
  • 举报
回复
以上 算法 执行效率 不如

while, for,if 组合的语句

代码 在我机子上, 我在网吧上的 有想要的 Email: webgee@163.com
vwxyzh 2007-12-28
  • 打赏
  • 举报
回复
lz居然是要从大到小排序。。。
修改一下:
var values = GetRandomValues().Distinct().Take(5).OrderBy(i => i).Reverse();
vwxyzh 2007-12-28
  • 打赏
  • 举报
回复
用3.0写了一下
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);
}
qiannv 2007-12-28
  • 打赏
  • 举报
回复
才学,路过,呵呵!
王集鹄 2007-12-25
  • 打赏
  • 举报
回复
路过
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); // 输出


-------
伴水_清洁工_
[img=http://photo.wap898.com/mms/200509/20050923/2005092312443731799_s.jpg]看帖要回帖[/img]
zhongguoren666 2007-12-25
  • 打赏
  • 举报
回复
楼主,LikeCode(一楼)写的已经非常详细,已经好了.请给分吧,多给他点.
ycagri 2007-12-25
  • 打赏
  • 举报
回复
顶18楼
guyehanxinlei 2007-12-25
  • 打赏
  • 举报
回复
 static void Main(string[] args)
{
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());
}
}
TheGamer 2007-12-25
  • 打赏
  • 举报
回复
进来看看...
Q_282898034 2007-12-24
  • 打赏
  • 举报
回复
新亿你先把你的代码贴出来看看
vicqqq 2007-12-24
  • 打赏
  • 举报
回复
list.sort()不就排序了吗
LikeCode 2007-12-24
  • 打赏
  • 举报
回复
运用的排序法是最有名的排序法:冒泡排序法,但也是效率比较一般的算法,读书时算法学地很差,只记得泡冒,唉,有时间一定要去恶补一下算法.

int capacity = 5;
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;
}
}
}
funlove999 2007-12-24
  • 打赏
  • 举报
回复

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的基础上,改进了一下下
funlove999 2007-12-24
  • 打赏
  • 举报
回复
取下标,每取出一个数,把这个数从数组中移除,取的随机数为35-i,依次累推,确保每次取出的都是不重复的
Q_282898034 2007-12-23
  • 打赏
  • 举报
回复
从1-35个数中随机选出5个,
这句话的意思是:个数可变。从1个数里选出5个,从2个数里选出5个,......从34个数里选出5个,从35个数里选出5个。
SmallWhiter 2007-12-23
  • 打赏
  • 举报
回复
相当的牛 学习一下
其实楼主的问题也不难,C#实现起来简单,不过不知道性能如何
JohhGan 2007-12-23
  • 打赏
  • 举报
回复
用的着那么详细吗
难道楼主什么也不懂
LikeCode 2007-12-23
  • 打赏
  • 举报
回复
1楼的代码没有排序.
新亿 2007-12-23
  • 打赏
  • 举报
回复


等大家回答啊 呵呵~~ 这个题 我搞定了 看看有更优化的代码没
mohugomohu 2007-12-23
  • 打赏
  • 举报
回复
又是随机数问题,留个言先,以后直接拿这代码贴出去混分!哈哈!
加载更多回复(5)

111,076

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧