把 这6个数 放到一个数组里,使用  Random rad = new Random(); 产生1-6的随机数,根据随机数去数组里的值拼接。

解决方案 »

  1.   

    一楼所说肯定是有问题的。因为 要达到最优化你去用随机数进行判断那么。。各种坑。
    LZ需要的是一堆数字 然后查看乱序是多少个
     
    建议LZ可以这样  这样最优不优不清楚  先满足了需求然后再优化 你看怎么样建立首先  当然会涉及到第一位是0的情况 这种就需要单独处理了。先排除这种情况进行操作   按这堆数字的位数循环 如6位那么 外层循环6次  内层循环就把当前数字与内层循环数进行对换位置 
    最后把这个数字放到数组里面  如此循环完毕之后就形成了一个包含同种情况的数字的数组。如此再次循环把该数组剃重 最后的数据就是你需要的。
    如果你觉得这个方案可行那么我们在继续讨论。不行的话就算了
      

  2.   

    代码怎么实现呢。我的js代码:
    var maxcount=50;  //用户输入的需要生成的数量
    var listNumber=new Array();
    for(var a=0;a<6;a++){
                        for(var b=0;b<6&&b!=a;b++){
                            for(var c=0;c<6&&c!=b;c++){
                                for(var d=0;d<6&&d!=c;d++){
                                    for(var e=0;e<6&&e!=d;e++){
                                        for(var f=0;f<6&&f!=e;f++){  //id=TNum1-6 分别为用户输入的6个数字
                                            var value=$("#TNum"+(a+1)).val()+$("#TNum"+(b+1)).val()+$("#TNum"+(c+1)).val()
                                            +$("#TNum"+(d+1)).val()+$("#TNum"+(e+1)).val()+$("#TNum"+(f+1)).val();
                                            var isbreak=false;
                                            for(var j=0;j<listNumber.length;j++){
                                                if(listNumber[j]==value){
                                                    isbreak=true;
                                                   break;      
                                                }
                                            }
                                            if(isbreak){
                                                continue;
                                            }
                                            listNumber.push(value);
                                            i=i+1;
                                            if(i>maxcount){
                                            
                                                if (maxcount % 5 != 0)  //结束
                                                {
                                                    htmlstr += "</div>";
                                                }
                                                document.getElementById('preview').innerHTML = htmlstr;
                                               return;
                                            }
                                            if (i % 5 == 1)  //换行
                                            {
                                                htmlstr += "<div class='tr'>";
                                            }
                                             htmlstr += "<input name=\"TZNum\" class=\"number\" type=\"text\" maxlength=\"6\" value=\"" + value + "\"  onkeyup=\"if(event.keyCode !=37 && event.keyCode != 39) value=value.replace(/\\D/g,'');\" />"
                                            if (i % 5 == 0)
                                            {
                                                htmlstr += "</div>";
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                                            if (NCount % 5 != 0)  //结束
                                            {
                                                htmlstr += "</div>";
                                            }
                                            document.getElementById('preview').innerHTML = htmlstr;
      

  3.   

    如果觉得上面的复杂了直接看下面代码:var maxcount=50;  //用户输入的需要生成的数量
    var listNumber=new Array();
    for(var a=0;a<6;a++){
                        for(var b=0;b<6&&b!=a;b++){
                            for(var c=0;c<6&&c!=b;c++){
                                for(var d=0;d<6&&d!=c;d++){
                                    for(var e=0;e<6&&e!=d;e++){
                                        for(var f=0;f<6&&f!=e;f++){ 
                                            var value=(a+1).toString()+(b+1).toString()+(c+1).toString()+(d+1).toString()+(e+1).toString()+(f+1).toString();
                                            var isbreak=false;
                                            for(var j=0;j<listNumber.length;j++){
                                                if(listNumber[j]==value){
                                                    isbreak=true;
                                                   break;      
                                                }
                                            }
                                            if(isbreak){
                                                continue;
                                            }
                                            listNumber.push(value);
                                            i=i+1;
                                            if(i>maxcount){
                                               return;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
      

  4.   

    首先哈。。只需要2层循环就够用了。架设输入的数是a 暂且讨论为字符的   
     for(int i=0;i<a.length;i++){
        for(int j=0;j<a.length;j++){
          //这里把 a 在i位置的数  与 a在j位置的数进行互相替换当然得重新申明一个变量接收这2个处理而不影响上面的双重循环
          //把换位过后的数保存到数组
    }
    }
    //双重循环后就获取到一个新的数组 这里装满了  a各种位置的 数据    把这个数组在进行循环排出相同的数据 这个数组里面的就是你想要的了
     其实2楼那个链接里面有具体代码 。。我是手写的 写多了怕出错
      

  5.   

    class Program
        {
            static void Main(string[] args)
            {
                string  s,
                        str = "";
                List<string> Data = new List<string>();
                s = Console.ReadLine();
                for (int num1 = 0; num1 < 6; num1++)
                    for (int num2 = 0; num2 < 6; num2++)
                    {
                        if (num2 == num1) continue;
                        for (int num3 = 0; num3 < 6; num3++)
                        {
                            if ((num3 == num2) || (num3 == num1)) continue;
                            for (int num4 = 0; num4 < 6; num4++)
                            {
                                if ((num4 == num3) || (num4 == num2) || (num4 ==num1)) continue;
                                for (int num5 = 0; num5 < 6; num5++)
                                {
                                    if ((num5 == num4) || (num5 == num3) || (num5 == num2) || (num5 == num1)) continue;
                                    for (int num6 = 0; num6 < 6; num6++)
                                    {
                                        if ((num6 == num5) || (num6 == num4) || (num6 == num3) || (num6 == num2) || (num6 == num1)) continue;
                                        str = "" + s[num1] + s[num2] + s[num3] + s[num4] + s[num5] + s[num6];
                                        if (!Data.Contains(str))
                                        {
                                            Data.Add(str);
                                        }
                                    }
                                }
                            }
                        }
                    }
                foreach (string Item in Data)
                    Console.WriteLine(Item);
                Console.ReadKey();
            }
        }似乎用递归实现简洁些。
      

  6.   

            static string getRandom(string seek)
            {
                string strRet = "";
                string strSeek = new string(seek.ToCharArray().Distinct().ToArray());
                Random rnd = new Random();
                for (int i = 0; i < 6; i++)
                {
                    string strItem = strSeek.ToCharArray()[rnd.Next(1, strSeek.ToCharArray().Length) - 1].ToString();
                    strRet += strItem;
                    int intPOS;
                    intPOS = seek.IndexOf(strItem)+1;
                    seek = seek.Insert(intPOS, " ");
                    seek = seek.Replace(strItem+" ", "");
                    strSeek = new string(seek.ToCharArray().Distinct().ToArray());
                }
                Console.Write(strRet);
                return strRet;
            }
      

  7.   

    获得有多少个数:        static int getCount(string seek)
            {
                char[] charSeek = seek.ToCharArray().Distinct().ToArray();
                int ret = fact(seek.Length);
                for(int i=0;i<charSeek.Length;i++)
                {
                    ret /= fact(seek.Length - seek.Replace(charSeek[i].ToString(), "").Length);
                }
                Console.WriteLine(ret);
                return ret;
            }        static int fact(int n)
            {
                if (n < 2)
                    return 1;
                else
                {
                    int ret = 1;
                    for (int i = 1; i <= n; i++)
                        ret *= i;
                    return ret;
                }
            }