MyException - 我的异常网
当前位置:我的异常网» C# » 从1,50随机20个不重复数解决办法

从1,50随机20个不重复数解决办法

www.MyException.Cn  网友分享于:2013-02-02  浏览:21次
从1,50随机20个不重复数
要求:不允许重复.我这么写的.觉得好傻
    ArrayList   list   =   new   ArrayList();
                        int   k   =   0;
                        do
                        {
                                  k   =random   .Next   (1,51);
                                  if   (!list.Contains(k))
                                          list.Add(k);
                        }
                        while   (list.Count   <   20);

------解决方案--------------------
List <int> numbers=new List <int> ();
List <int> result=new List <int> ();
Random rand=new Random();

for(int i=1;i <51;i++){
numbers.Add(i);
}
while(numbers.Count> 0){
int n=rand.Next(0,numbers.Count);
result.Add(n);
numbers.RemoveAt(n-1);//number.Remove(n);
}

//大概这样吧,没测试~~~
------解决方案--------------------
public static void Main()
{
int []a=new int[50];
Random ra=new Random();
for(int i=0;i <50;i++)
{
int str=ra.Next(0,49);
if(a[str]==0)
{
a[str]=i;
}
else
{
i--;
}
}
for(int j=0;j <50;j++)
{
Console.WriteLine(a[j]);
}
}
楼主可以试下我的方法
------解决方案--------------------
回复人:he_8134(只有星星伴明月)

哈哈,我写错了一点点~~~~
numbers.RemoveAt(n-1);//number.Remove(n);
----------
错的就是这一点点吧...


回复人:changkimkim()

LZ的已经不错了,没觉得还有什么更好的方法
--------------
LZ的方法不算傻...应该说是很常规的...但是更好的方法还是有的...

Random rnd = new Random();
byte[] keys = new byte[50];
rnd.NextBytes(keys);
int[] items = new int[50];
for (int i = 0; i < 50; i++)
{
items[i] = i + 1;
}
Array.Sort(keys, items);
int[] result = new int[20];
Array.Copy(items, result, 20);
return result;

------解决方案--------------------
http://blog.csdn.net/vrhero/archive/2007/07/29/1714682.aspx

总结了一下,写成一个通用方法...放在blog里...
------解决方案--------------------
vrhero:
请教一下啊,
1
rnd.NextBytes(keys);这个是不是用随即数把KEYS数组添满,那他啊里面会有重复的数吗?
2
Array.Sort(keys, items);他是怎么进行排序的,应该是根据KEYS里的元素进行排序吧,那KEYS里的元素要是重复了怎么办,这样能保证items里的前20个元素就是所要的元素吗??


------解决方案--------------------
good
------解决方案--------------------
to JL99000:

1.Random.NextBytes 方法将字节数组的每个元素均设置为一个 0 - 255 之间的随机数,既然是随机数自然难免重复,数组长度大于256时必然会有重复...

2.首先我们保证 items 的元素没有重复,其次 Array.Sort 方法的 QuickSort 算法执行不稳定排序,即使 keys 中两元素相等,对应 items 中的两元素顺序也不可预知,这不就是我们要的随机吗...

文章评论

程序员和编码员之间的区别
程序员和编码员之间的区别
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
程序员的鄙视链
程序员的鄙视链
总结2014中国互联网十大段子
总结2014中国互联网十大段子
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
如何成为一名黑客
如何成为一名黑客
一个程序员的时间管理
一个程序员的时间管理
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
10个调试和排错的小建议
10个调试和排错的小建议
旅行,写作,编程
旅行,写作,编程
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
程序员必看的十大电影
程序员必看的十大电影
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
中美印日四国程序员比较
中美印日四国程序员比较
为什么程序员都是夜猫子
为什么程序员都是夜猫子
程序员都该阅读的书
程序员都该阅读的书
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
编程语言是女人
编程语言是女人
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
老程序员的下场
老程序员的下场
我的丈夫是个程序员
我的丈夫是个程序员
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
程序员应该关注的一些事儿
程序员应该关注的一些事儿
代码女神横空出世
代码女神横空出世
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
那些争议最大的编程观点
那些争议最大的编程观点
每天工作4小时的程序员
每天工作4小时的程序员
我是如何打败拖延症的
我是如何打败拖延症的
 程序员的样子
程序员的样子
鲜为人知的编程真相
鲜为人知的编程真相
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
漫画:程序员的工作
漫画:程序员的工作
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
Java程序员必看电影
Java程序员必看电影
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有