gpt4 book ai didi

c# - 选择第 n 个重复行之后的下一行

转载 作者:太空宇宙 更新时间:2023-11-03 20:33:34 24 4
gpt4 key购买 nike

为了证明抛硬币没有内存,我在做一个概率游戏。换句话说,如果我连续抛出 2 个正面,那么下一次抛出正面或反面的概率是相同的。我正在生成随机数。例如,1 代表尾部,0 代表头部。我正在将结果记录在列表中。因此该列表包含 1 和 0。例如,如何执行选择以仅获取连续 3 个正面或反面之后的行。换句话说,如果我有列表:

0,1,0,1,1,0,0,0,1,0,1,1,1,1

我想得到1,1

因为有3个0重复,下一个数是1,而下一个1是因为连续3个1后的数是1


我知道我可以通过循环执行选择迭代并在其中有一个计数器,每次有重复的计数器增量但我想知道是否可以使用 linq 查询来做到这一点

最佳答案

这个问题类似于其他 SO 问题 Can I use LINQ to retrieve only "on change" values?

Thomas Petricek 的回答建议在 GroupBy 扩展方法上创建覆盖。该技术应该为您提供您想要的,而且它还创建了在您的键中断上执行聚合函数的能力。

Thomas 一定对这个问题非常着迷,因为他写了一篇关于创建自定义 GroupBy 以对相邻键值进行分组的深入文章。这是那篇文章:http://tomasp.net/blog/custom-linq-grouping.aspx

如果您使用本文中建议的技术,那么您就有了一种非常干净的方法来提取重复的行。

int[] coinTossResults = {0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1};
var tails = (from x in coinTossResults.WithAdjacentGrouping()
group x by x into g
where g.Count() > 1 && g.Key == 1
select g);

WithAdjacentGrouping 创建 IAdjacentGroup 类型,该类型覆盖了 GroupBy。

关于c# - 选择第 n 个重复行之后的下一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6170728/

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