当前位置:编程学习 > C#/ASP.NET >>

在给定的一组数里面,随机抽取其中的一个数。

比如现在有一组数  5,58,12,47,69,57  没有规律的。每次从其中随机抽取一个出来。不能有重复的。 --------------------编程问答-------------------- 把数组随机排序,然后重头取到尾 --------------------编程问答-------------------- 随用随机数,去数组长度的随机数,然后将取出来的存放一起,判断本次取出来的和以前取出来是时候一直即可 --------------------编程问答-------------------- 将已取出的数字放在另一数组内
每次取出值 判断是否包含在此数据中
如果包含重取 --------------------编程问答--------------------
        private void button1_Click(object sender, EventArgs e)
        {
            Random r = new Random(Guid.NewGuid().GetHashCode());
            string[] arr = { "2","5","7","1","9","4"};

            foreach (string s in arr)
            {
                int index = r.Next(0, arr.Length);
                string strTemp = arr[index];
                arr[index] = arr[0];
                arr[0] = strTemp;
            }

            foreach (string s in arr)
            {
                MessageBox.Show(s);
            }
        }
--------------------编程问答--------------------
引用楼主 lw8601100 的回复:
比如现在有一组数 5,58,12,47,69,57 没有规律的。每次从其中随机抽取一个出来。不能有重复的。


每次从其中随机抽取一个出来。不能有重复的-------病句啊
--------------------编程问答-------------------- 可能我没说得具体,那么现在有无规律的100个数,那么我现在随机从中抽取20个出来,如果说把它排了序,在从头到尾抽失去意义了。就是要随机乱抽。 --------------------编程问答-------------------- linq
var res=list.orderBy(c=> Guid.NewGuid()).take(20)
--------------------编程问答-------------------- Random r = new Random(Guid.NewGuid().GetHashCode());
string[] arr = { 1,2,4,5,36,7,8}
List<int> lst=new L;ist<int>();
for(int i=0;i<20;i++)
{
  lst.Add(r.Next(0, arr.Length));
}
linq arr.orderBy(a=> Guid.NewGuid()).Take(20) --------------------编程问答-------------------- int[] arr= new int[] { 1, 2, 3, 4, 5,... };
var q = (from c in abc
orderby Guid.NewGuid()
select c).Take(20);
--------------------编程问答-------------------- from c in arr --------------------编程问答-------------------- 你这貌似是想写个抽奖的程序,其实你在随机选取了之后把那个选过的数去掉就OK了,下次随机选就不会重复了。 --------------------编程问答-------------------- 学习了
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,