回 帖 发 新 帖 刷新版面

主题:求助!!!C#

用c# 怎样实现在字符串中随机抽取10个不重复的字符

回复列表 (共20个回复)

沙发

用随机函数生成下标. 通过下标取字符.

板凳

下标不同,可字符可能相同啊!

3 楼

using System;
using System.Collections.Generic;
using System.Text;

namespace _0_0Chars
{
    class Program
    {
        static void Main(string[] args)
        {
            Random r;
            char[] ch = new char[10];
            for (int i = 0; i < ch.Length; i++)
            {
                r = new Random(i);
                ch[i] = Convert.ToChar(r.Next(97,123));
                Console.Write(ch[i]);
            }

        }
    }
}

4 楼

楼上的代码运行起来好象不能显示啊~!@

5 楼


主要是运行起来每次取的10个随机数都是一样的~!

6 楼

把r = new Random(i);中的i去掉 
不过可能得到每次输出的结果。。。。。
其实3楼的在for循环中重复定义了r = new Random(i);只要把它代码外移就可以了

7 楼

大家看看这个代码  帮忙改一下

string str = "用c# 怎样实现在字符串中随机抽取10个不重复的字符";

            Random rd = new Random();

            List<Char> newChar = new List<char>();
            List<int> ln = new List<int>();

            int cnt = 0,
                rnum =0;
            while(true)
            {
                if(cnt>=10) break;
                rnum = rd.Next(0, str.Length - 1);
                int l=0;
                for (; l < ln.Count; l++)
                {
                    if (ln[l] == rnum) break;
                }
                if (l < ln.Count) continue;
                else
                {
                    newChar.Add(str[rnum]);
                    ln.Add(rnum);
                    cnt++;
                }
            }
            return newChar.ToArray();

8 楼

这个程序你看能不能升成
using System;

namespace ConsoleApplication1
{
    /// <summary>
    /// Class1 的摘要说明。
    /// </summary>
    class Class1
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main(string[] args)
        {
            Random myRandom = new Random();
            char a = 'A';
            for (int i = 0;i<10;i++)
            {
                char b =(char)((int)a+myRandom.Next(0,26));
                Console.WriteLine(b.ToString());
            }

        }
    }
}

9 楼

using System;

namespace ConsoleApplication1
{
    
    class Class1
    {
       
        [STAThread]
        static void Main(string[] args)
        {
            Random myRandom = new Random();
            char a = 'a';//如果是"A"显示的是大写的n个字母,若是“a”显示的是n个小写的字母
            int n = Convert.ToInt32(Console.ReadLine());//要求输入字母的个数
            for (int i = 0; i < n; i++)
            {
                char b = (char)((int)a + myRandom.Next(0, 26));
                Console.Write(b.ToString());
            }
            Console.Read();

        }
    }
}

10 楼

9楼的 你的循环语句中没有加判断啊~!有重复的出现

我来回复

您尚未登录,请登录后再回复。点此登录或注册