none
如何把1-25数值随机排序 RRS feed

答案

  •  using System.Collections;
    private void button1_Click(object sender, EventArgs e)
        {
                ArrayList al = new ArrayList();
          StringBuilder sb = new StringBuilder();
          while (true)
          {
              Random rd = new Random();
             int temp = rd.Next(1,26);
             if (!al.Contains(temp))
             {
               al.Add(temp);
               sb.Append(temp+",");
             }
    
             if (al.Count==25)
             {
               break;
             }
          }
    
          this.Text = sb.ToString();
    
        }

    努力+方法=成功
    • 已标记为答案 茉莉花 2010年5月11日 2:01
    2010年5月7日 2:44

全部回复

  •  using System.Collections;
    private void button1_Click(object sender, EventArgs e)
        {
                ArrayList al = new ArrayList();
          StringBuilder sb = new StringBuilder();
          while (true)
          {
              Random rd = new Random();
             int temp = rd.Next(1,26);
             if (!al.Contains(temp))
             {
               al.Add(temp);
               sb.Append(temp+",");
             }
    
             if (al.Count==25)
             {
               break;
             }
          }
    
          this.Text = sb.ToString();
    
        }

    努力+方法=成功
    • 已标记为答案 茉莉花 2010年5月11日 2:01
    2010年5月7日 2:44
  • 开心提供了一个方法,不知您是否满意?

    如果您想获得1~25不重复的随机数(1~25自身不重复),那么请尝试以下做法:

    1)使用for把1~25塞入一个List<int> numbers中。

    2)使用for,加上产生一个随机下标(Random(0,numbers.Count-1)),获得numbers中的一个随机数。然后从List中删除这个下标对应的数字(使用List.RemoveAt(index))

    3)把这个数字加入到一个新的List中,如此反复知直到全部完成即可。

    2010年5月7日 3:12
    版主
  • 你好!

        我帮你写了一个,先初始化一个包含数字1-25的数组,然后每次循环取一个随机位置,将这个位置的元素和最后一个位置的元素交换!你试试看:

            static void Main(string[] args)
            {
                int[] result = new int[25];
                for (int i = 0; i < 25; i++)
                    result[i] = i + 1;
                for (int j = 24; j > 0; j--)
                {
                    Random r = new Random();
                    int index = r.Next(0, j);
                    int temp = result[index];
                    result[index] = result[j];
                    result[j] = temp;
                }

                for (int i = 0; i < 25; i++)
                    Console.WriteLine(result[i].ToString());
                   
            }


    周雪峰
    2010年5月7日 10:10
    版主