Tag: 算法

在C#中有更好的方法将DateTime四舍五入到最接近的5秒吗?

我想将DateTime四舍五入到最接近的5秒。 这是我目前正在做的方式,但我想知道是否有更好或更简洁的方式? DateTime now = DateTime.Now; int second = 0; // round to nearest 5 second mark if (now.Second % 5 > 2.5) { // round up second = now.Second + (5 – (now.Second % 5)); } else { // round down second = now.Second – (now.Second % 5); } DateTime rounded = new DateTime(now.Year, […]

随机播放列表算法

我需要以随机顺序从一个范围(例如从x到y)创建一个数字列表,这样每个订单都有相同的机会。 对于我用C#编写的音乐播放器,我需要这个,以随机顺序创建播放列表。 有任何想法吗? 谢谢。 编辑:我对更改原始列表不感兴趣,只需从随机顺序中获取一个范围内的随机索引,以便每个订单都有相同的机会。 这是我到目前为止所写的内容: public static IEnumerable RandomIndexes(int count) { if (count > 0) { int[] indexes = new int[count]; int indexesCountMinus1 = count – 1; for (int i = 0; i 0) { int currIndex = random.Next(0, indexesCountMinus1 + 1); yield return indexes[currIndex]; indexes[currIndex] = indexes[indexesCountMinus1]; indexesCountMinus1–; } yield return indexes[0]; } […]

如何确定点是否在某一线附近?

我之前问过“ 我怎么能判断一个点是否属于某条线? ”我找到了合适的答案,所以非常感谢你。 现在,我想知道如何确定某个点是否接近我的线。

创建序列的幂集

我正在尝试创建一个程序,它是创建序列,字符串或数字的可能组合的基础。 这是某种加密/解密程序。 我正在使用Visual Studio 2013和C#。 我想要做的是从序列中生成一个功率集,但我有点困惑,无法继续进行。 这是代码。 public static void randomSeq(){ int temp = 0; string seq = “1234”; StringBuilder sb = new StringBuilder(); char[] bits = seq.Select((char c) => c).ToArray(); Console.Write(“Given Sequence: “); Console.Write(seq); Console.WriteLine(); Console.WriteLine(“Generated possiblities”); foreach (char item in bits){ Console.WriteLine(item); } do{ if (temp <= 2){ for (int i = temp […]

快速算法,找到平面上给定点的x个最近点

我想找到一个快速算法,以便找到平面上给定点的x个最近点。 我们实际上处理的点数不多(1000到100,000之间),但我需要每个点的x最近点。 (其中x通常在5到20之间。) 我需要用C#编写它。 关于用例的更多上下文:这些点是地图上的坐标。 (我知道,这意味着我们并不是在谈论一架飞机,但我希望避免处理投影问题。)最后,有许多其他点靠近它们的点应该用红色显示,点数不要太多靠近它们的点应显示为绿色。 在这两个极端之间,点是颜色梯度。

如何在WPF Canvas上绘制网格线?

我需要在WPF中在canvas上构建一个绘制网格线的函数: void DrawGridLine(double startX, double startY, double stepX, double stepY, double slop, double width, double height) { // How to implement draw gridline here? } 我怎么会这样呢?

项目欧拉问题3帮助

我正在尝试通过Project Euler工作,我在问题03上遇到障碍。我有一个适用于较小数字的算法,但问题3使用非常非常大的数字。 问题03: 13195的素数因子是5,7,13和29. 600851475143的最大素数因子是什么? 这是我在C#中的解决方案,它一直在运行,我认为接近一个小时。 我不是在寻找答案,因为我确实想自己解决这个问题。 主要是寻求一些帮助。 static void Main(string[] args) { const long n = 600851475143; //const long n = 13195; long count, half, largestPrime = 0; bool IsAPrime; half = n / 2; for (long i = half; i > 1 && largestPrime == 0; i–) { if (n % i == […]

XIRR计算

如何使用C#计算Excel的XIRR函数?

C#比较算法

c#中是否有任何开源算法可以解决在两个文本文件之间产生差异的问题? 如果它有某种方式突出显示文本文档中更改的确切区域,那将是非常酷的。

如何用自己压缩一个IEnumerable

我正在实现一些基于点列表的数学算法,如距离,面积,质心等。就像在这篇文章中一样: 找到使用linq导航点列表所需的距离 该文章描述了如何通过基本上用“自身”压缩序列来计算一系列点的总距离(按顺序排列),通过将原始IEnumerable的起始位置偏移1来生成Zip的序列。 因此,给定.Net 4.0中的Zip扩展,假设点类型为Point,以及合理的距离公式,您可以进行这样的调用,以生成从一个点到下一个点的距离序列,然后对距离求和: var distances = points.Zip(points.Skip(1),Distance); double totalDistance = distances.Sum(); 面积和质心计算类似,因为它们需要迭代序列,处理每对点(点[i]和点[i + 1])。 我想要制作一个通用的IEnumerable扩展,适合实现这些(可能还有其他)算法,这些算法在序列上运行,一次取两个项目(points [0]和points [1],points [1]和points [2], …,点[n-1]和points [n](或者是n-2和n-1 ……)并应用函数。 我的通用迭代器将具有与Zip类似的签名,但它不会收到第二个要压缩的序列,因为它实际上只是自己压缩。 我的第一次尝试看起来像这样: public static IEnumerable ZipMyself(this IEnumerable seq, Func resultSelector) { return seq.Zip(seq.Skip(1),resultSelector); } 开始编辑:看到响应后,我已经实现了Pairwise,并明确使用了底层的Enumerator,如下所示: public static IEnumerable Pairwise(this IEnumerable seq, Func resultSelector) { TSequence prev = default(TSequence); using (IEnumerator e […]