考虑我有一个像“new.txt”这样的文件,
asdfg
qwerty
zcx
poi
现在我需要随机播放此文本文件的行。我怎么能在C#中做到这一点。?
答案 0 :(得分:8)
var lines = File.ReadAllLines("test.txt");
var rnd = new Random();
lines = lines.OrderBy(line => rnd.Next()).ToArray();
File.WriteAllLines("test.txt", lines);
答案 1 :(得分:4)
不是真正高效的方式是:将文件读入IEnumerable<string>
,制作.OrderBy(line => Guid.NewGuid())
并将其写入文件
例如
var originalLines = File.ReadAllLines("test.txt");
var shuffledLines = lines.OrderBy(line => Guid.NewGuid()).ToArray();
File.WriteAllLines("test.txt", shuffledLines);
答案 2 :(得分:3)
我认为,Fisher-Yates shuffle并不难实现。
答案 3 :(得分:1)
我发现在MS Excel中这样做很有帮助,并考虑在此处发布。
1)将文件内容复制到MS Excel中的列。
2)然后在下一列第一个单元格(比如B1)中输入公式= rand()。
3)点击标题
,选择B栏4)编辑 - &gt;填充 - &gt;向下填充所有具有随机值的单元格
5)选择要排序的内容和此列B并按升序排序。
因此内容将被洗牌,可以复制并粘贴到文本文档中。
答案 4 :(得分:0)
您可以将每一行放在一个数组中,并使用该数组的随机索引重写您的文件。
答案 5 :(得分:0)
我的第一个猜测是加载
中的所有行List<string>
然后将列表洗牌,然后将其写回文件中,但如果文件很大,我的文件有点重...