刚学C#不久,请问怎样生成给定区间上的随机数,并且每个随机数不相同?谢谢!
例如在1-100之间生成30个随机数,每个数不相同。

解决方案 »

  1.   

    Random.Next() 返回非负随机数; Random.Next(Int) 返回一个小于所指定最大值的非负随机数 Random.Next(Int,Int) 返回一个指定范围内的随机数
    30个随机数,用个循环30次处理一下就可以,把结果放到数组里面为保证不重复,生成后和已经生成的数字比较一下如果重复,择再生成一次
      

  2.   

    只要2个for嵌套就可以啊,很容易的。
                 int[] allnum = new int[30];
                Random rand = new Random();
                
                for (int i = 0; i < allnum.Length; i++)
                {                allnum[i] = rand.Next(1,100);
                    for  (int k = 0; k < allnum.Length; k++)
                    {
                        while (true)
                        {
                            if (allnum[k] == allnum[i] && k != i)
                            {                            allnum[i] = rand.Next(1, 100);
                                k = 0;
                                
                            }
                            else
                            {
                                break;
                            
                            }
                        }
                    
                    
                    }
                    
                    this.label1.Text += allnum[i].ToString() + " ";            }
                
      

  3.   


    使用Java生成随机数int random=(int)(Math.random);
      

  4.   

    还是建议用Random()来实现!!!!!
      

  5.   

    int[] allnum = new int[30];
    //生成一个数组长度为30个长度的数组
    for(int i = 0;i < 30 ; i++)
    {
    random dm = new random();
    dm.next(0,100);//将产生的随机数赋给这个数组
    allnum[i]= rand.Next(1, 100);
    }
      

  6.   

    List<int> lst=new List<int>();Random r = new Random(DateTime.Now.Millisecond);
    lst.Add(r.Next(1, 100));
      

  7.   

    简单:namespace ConsoleApplication
    {
        class Program
        {
            static void Main(string[] args)
            {
                int Count = 0;
                List<int> r = new List<int>();
                List<int> Result = new List<int>();
                int MaxCount = 30;
                while (true)
                {
                    int i = new Random().Next(1, 100);
                    if (!r.Contains(i))
                    {
                        r.Add(i);
                        Count++;
                    }
                    if (Count >= MaxCount)
     break;
                }
                Result.AddRange(r.OrderBy(i => i));            Console.ReadKey();
            }
        }
    }
      

  8.   

    List<int> lst=new List<int>();Random r = new Random(DateTime.Now.Millisecond);
    lst.Add(r.Next(1, 100)); 牛人都是这么写代码的 
      

  9.   


    /*
     * 由SharpDevelop创建。
     * 用户: 石书义
     * 日期: 2011-5-7
     * 时间: 16:38
     * 
     * 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件
     */
    using System;
    using System.Collections;
    using System.Net;namespace CreateRandomNum
    {
    class Program
    {
    public static void Main(string[] args)
    {
    Console.Write("随机数:" + CreateNum(1,100,30));
    Console.ReadKey(true);
    }
    public static string CreateNum(int first,int last,int num)
    {    
    ArrayList MyArray = new ArrayList();    
    Random random = new Random();    
    string str = null;               
    //循环的次数    
    int Nums = num;    
    while (Nums > 0)    
    {    
    int n = random.Next(first,last);    
    if (!MyArray.Contains(n))    
    {    
    if (MyArray.Count < num)    
    {    
    MyArray.Add(n);  
    Nums -= 1;
    }    
    }       
    }    
    for (int i = 0; i <= MyArray.Count - 1; i++)    
    {    
    str += MyArray[i].ToString() + " ";    

    return str;   

    }
    }