1

私は、文字列内の文字の順序をランダム化する方法をいじったり研究したりしてきました。私は率直に言って、それを行う方法を理解していません。C# のドキュメントといくつかの Web サイトを検索しました。文字列内の文字の順序をランダム化する特定の方法を 1 つ見つけましたが、その仕組みがわかりません。また、 Random クラスは真にランダムではないことも読みました。これにより、結果が非​​常に似ている理由が説明されます。

私が使用している現在のメソッド(特に OrderBy() メソッド)はどのくらい正確に機能しますか。これを行うより良い方法はありますか?

現在のコード

string baseList = "abcdefghijklmnopqrstuvwxyz";
        Random random = new Random();
        string[] randLists = new string[baseList.Length];
        for (int i = 0; i < baseList.Length; i++)
        {
            randLists[i] = new string(baseList.ToCharArray().OrderBy(s => (random.Next(2) % 2) == 0).ToArray());
            Console.WriteLine(randLists[i]);
        }
        Console.Read();

これは私のランダム化の試みですが、まったく機能しません:

*string bL = "abcdefghijklmnopqrstuvwxyz";
            string[] rL = new string[bL.Length];
            Random randomizer = new Random();
            for (int i = 0; i < bL.Length; i++)
            {
                rL = new string(bL.ToCharArray().OrderBy(c => (randomizer.Next(0, 25)).ToString()));
            }*

ご協力いただきありがとうございます。その間も研究を続けます。

4

3 に答える 3

0

もう一つの例...

    static void Main(string[] args)
    {
        string baseList = "abcdefghijklmnopqrstuvwxyz";
        Console.WriteLine(baseList);
        string shuffled = Shuffle(baseList);
        Console.WriteLine(shuffled);
        Console.ReadLine();
    }

    static Random R = new Random();

    static string Shuffle(string list)
    {
        int index;
        List<char> chars = new List<char>(list);
        StringBuilder sb = new StringBuilder();
        while (chars.Count > 0)
        {
            index = R.Next(chars.Count);
            sb.Append(chars[index]);
            chars.RemoveAt(index);
        }
        return sb.ToString();
    }
于 2013-10-08T03:57:11.243 に答える