gpt4 book ai didi

c# - 随机化字符串中的字符列表,C#

转载 作者:太空宇宙 更新时间:2023-11-03 19:12:58 25 4
gpt4 key购买 nike

我一直在尝试/研究随机化字符串中字符顺序的方法。坦率地说,我只是不明白该怎么做。我搜索了 C# 文档和一些网站。我发现了一种随机化字符串中字符顺序的特殊方法,但我不明白它是如何工作的。我还读到 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()));
}*

在此先感谢您的帮助。在此期间,我会继续研究。

最佳答案

虽然你找到的代码很短,但它并没有对原始字符串进行很好的分布式随机播放:随机化器很可能在生成随机播放的过程中给你相同的数字,增加了相应字符出现的概率将保持与原始字符串中相同的相对顺序。

这个问题的一个解决方案是使用 Fisher–Yates shuffle .它很容易实现(不过你需要远离 common implementation errors )。

由于 string 是不可变的,您需要打乱一个字符数组,然后从中生成一个 string

关于c# - 随机化字符串中的字符列表,C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19237647/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com