Tag: 算法

如何将十进制值舍入到最接近的0.05值?

有没有办法将十进制值四舍五入到.Net中最近的0.05值? 例如: 7.125 – > 7.15 6.66 – > 6.7 如果它现在可用,任何人都可以提供算法吗?

在C#中计算整数log2的最快方法是什么?

如何最有效地计算C#中整数(日志库2)所需的位数? 例如: int bits = 1 + log2(100); => bits == 7

如何在运行时生成随机数?

由于计算机无法选择随机数(可以吗?)这个随机数是如何实际生成的。 例如在C#中我们说, Random.Next() 里面发生了什么?

从原始波数据中检测特定频率/音调

我正在读取来自麦克风的原始波流。 (这部分可以正常工作,因为我可以将它发送到扬声器并获得良好的回声。) 为简单起见,我想要检测波形数据中的DTMF音调。 实际上我想检测任何频率,而不仅仅是DTMF中的频率。 但我总是知道我要找的频率。 我试过通过FFT运行它,但如果我想要高精度的检测(例如它只有20毫秒),它似乎不是很有效。 我可以检测到它的精度大约为200毫秒。 关于算法,我有哪些选择? 它有任何.Net库吗?

评估数学表达式的最佳算法?

什么是评估数学表达式的最佳算法? 我希望能够优化这一点,因为我可能有一个带有各种变量的公式,我可能需要使用不同的变量评估数百次。 所以基本上如果我最初可以解析公式以便以某种方式对其进行优化,然后我可以根据需要将变量传递给此优化版本,每次为我生成结果。 我将用Delphi或C#编写这个。 我已经通过使用分流码算法编写了类似的东西,但每次我需要计算相同的公式时,我必须经历解析阶段。 必须有更好的方法来做到这一点。

创建自己的Tinyurl风格的uid

我正在写一篇关于Guids / UID的人类可读替代品的小文章,例如在TinyURL上用于url哈希的那些(通常在杂志中打印,因此需要简短)。 我生成的简单uid是 – 6个字符:小写字母(az)或0-9。 “根据我的计算队长”,这是6个相互排斥的事件,虽然计算冲突的概率比P(A或B)= P(A)+ P(B)稍微硬一点,显然它包括数字和来自下面的代码,您可以看到它是否使用50/50的数字或字母。 我对冲突率很感兴趣,如果下面的代码是对生成哈希值的预期冲突率的真实模拟。 平均而言,我每百万得到40-50次冲突,但是考虑到uid不会一次产生一百万次,但可能每分钟只能产生10-1000次。 每次发生冲突的概率是多少,谁能建议更好的方式呢? static Random _random = new Random(); public static void main() { // Size of the key, 6 HashSet set = new HashSet(); int clashes = 0; for (int n=0;n < 1000000;n++) { StringBuilder builder = new StringBuilder(); for (int i =0;i 0.5) { […]

两条线的交叉算法?

我有2行。 两条线都包含它们的2点X和Y.这意味着它们都有长度。 我看到2个公式,一个使用决定因素,一个使用普通代数。 哪个是最有效的计算方法,公式是什么样的? 我在代码中使用矩阵很困难。 这是我到目前为止,它是否更有效? public static Vector3 Intersect(Vector3 line1V1, Vector3 line1V2, Vector3 line2V1, Vector3 line2V2) { //Line1 float A1 = line1V2.Y – line1V1.Y; float B1 = line1V2.X – line1V1.X; float C1 = A1*line1V1.X + B1*line1V1.Y; //Line2 float A2 = line2V2.Y – line2V1.Y; float B2 = line2V2.X – line2V1.X; float C2 = A2 * […]

如何判断一个点是否属于某一行?

如何判断一个点是否属于某一行? 如果可能,可以举例说明。

检查字符串具有平衡括号

我正在阅读算法设计手册第二版 ,这是一个练习题。 引用这个问题 编译器和文本编辑器的一个常见问题是确定字符串中的括号是否是平衡的并且是否正确嵌套。 例如,字符串((())())()包含正确嵌套的括号对,字符串()(和())不包含。 如果字符串包含正确嵌套和平衡的括号,则给出一个返回true的算法,否则返回false。 如果字符串没有正确嵌套和平衡,请确定第一个有问题的括号的位置。 问题在堆栈,队列和列表类别下。 这是我在C#中写的内容。 const char LeftParenthesis = ‘(‘; const char RightParenthesis = ‘)’; bool AreParenthesesBalanced(string str, out int errorAt) { var items = new Stack(str.Length); errorAt = -1; for (int i = 0; i 0) { errorAt = items.Peek() + 1; return false; } return true; } 这很好用。 但我不确定这是解决这个问题的正确方法。 […]

如何获得所有可能的3个字母排列?

可能重复: 列出字符串/整数的所有排列 例如, aaa .. aaz .. aba .. abz .. aca .. acz .. azz .. baa .. baz .. bba .. bbz .. zzz 基本上,想象计算二进制,但不是从0到1,它从a到z。 我一直试图让这个工作几个小时现在无济于事,公式变得相当复杂,我不确定是否有更简单的方法来做到这一点。 谢谢阅读。 编辑:我现在有这样的东西,但它不是那里,我不确定是否有更好的方法: private IEnumerable GetWordsOfLength(int length) { char letterA = ‘a’, letterZ = ‘z’; StringBuilder currentLetters = new StringBuilder(new string(letterA, length)); StringBuilder endingLetters = new StringBuilder(new string(letterZ, […]