Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Math 在Python理论中数到一百万_Math_Theory_Mathematical Optimization - Fatal编程技术网

Math 在Python理论中数到一百万

Math 在Python理论中数到一百万,math,theory,mathematical-optimization,Math,Theory,Mathematical Optimization,我在学习Python时遇到了一个问题,类似于“大声数到1000000需要多长时间?”它给出的唯一参数是,“你平均每秒数1位数。”我解决了这个问题,这不是很难。然后我开始考虑大声数数,把每个数字都念出来。在我看来,这个参数似乎是错的,事实上,谷歌给出的答案仅仅是“从多长时间数到一百万”就表明它是错的。考虑到序列中的每个数字都需要逐渐变长的时间(指数增长),必须有更好的方法 任何想法或一般指导都会有所帮助。在不同时间间隔对不同人群的“计数率”进行抽样是否有效?编写音节的程序行得通吗?我真的很好奇,在

我在学习Python时遇到了一个问题,类似于“大声数到1000000需要多长时间?”它给出的唯一参数是,“你平均每秒数1位数。”我解决了这个问题,这不是很难。然后我开始考虑大声数数,把每个数字都念出来。在我看来,这个参数似乎是错的,事实上,谷歌给出的答案仅仅是“从多长时间数到一百万”就表明它是错的。考虑到序列中的每个数字都需要逐渐变长的时间(指数增长),必须有更好的方法

任何想法或一般指导都会有所帮助。在不同时间间隔对不同人群的“计数率”进行抽样是否有效?编写音节的程序行得通吗?我真的很好奇,在SO和Google上到处寻找解决方案,这些解决方案并没有围绕着看似不准确的“平均时间”展开


谢谢,如果这不是主题或在适当的地方,我很抱歉。我是一个长期潜伏者,但新的张贴,所以让我知道,如果你需要更多的信息或任何东西。谢谢

为了简单起见,让我们假设你说1502不是“一千五百零二”,而是“一千五百零二”。然后我们可以按等级划分它

现在让我们忽略这个事实,不管你说“和”与否()。我将使用这个参考(和英式英语,因为我更喜欢它,而且更一致:)来解释数字的发音

事实上,为了正式地描述这一点,让
t
成为一组数字的函数,它告诉您该集合中每个数字的发音需要多少时间。那么您的问题是如何计算
t([1..1000000])
,我们将使用
M=t([1..999])

前一个三重态时间的函数 要读一个大数字,我们从左边开始,读三位数的组。当然,左边的组可能只有一个或两个数字

因此,对于每千个
x
数字,您将说
x千个y
,其中
y
将描述从1到999的所有数字

因此,您在
x 000…
中花费的时间是
1000 t({1000x})+M
,如下所述:

注意,通过简单地定义
t({0})=0,这个公式可以推广到1000以下的数字

现在,根据我们的假设,说“x千”的时间等于说“x”的时间加上说“千”的时间(当x>0时)。因此,你的答案是:

说“千”字需要多少时间。这假设你说1000是“一千”。如果您只想说“千”,您可能需要删除
1000头(“一”)

我是如何坚持引用的:

数字100-199以100开头。。。或者一百

你可以用完全相同的方式来表示从10亿开始计算所需的时间,以及上面的数字,依此类推103的所有更大的幂,即。

考虑到“和” 有一个小的修正要做。让我们假设
M
是当数字前面至少有一组非0数字,包括首字母“和”s时,从1到999的数字发音所需的时间

我们的参考资料(我链接的wordreference帖子)如下所示:

加入这些团体我们该怎么说? 通常,我们不使用任何连接词。 例外是最后一组。 如果千后的最后一个组为1-99,则与和合并

因此,我们的更正仅适用于0和999之间的数字(在此之前没有非零组):

得到M 或者更确切地说,让我们得到t([1..999]),因为它更自然,我们知道它与M的关系

C=t([1..99])
X=t([1..9])

在1到999之间,我们有[1..99]中的所有数字,以及所有9个不说“和”的精确百分之一百,即108次发生。有900个数字,前缀是100个数字

因此

C可能很难分解,所以我不打算尝试

最终结果 修正公式为:

作为C和X的函数:

请注意,如果您计划执行此乘法并具有任何类型的正确数量级,那么tau(word)、C和X的度量需要非常精确


结论:英国人最后说了很多“和”。最后一个公式的好处是,如果你决定不想发“and”的音,你可以去掉所有的“and”。

我认为你的直觉是一个很好的策略。在这条路上帮忙:而且,你应该尝试很多东西,这很清楚。但如何衡量哪些更好,哪些更糟?我想你可以用IVONA文本来验证你的每一篇论文。(也许您能够在python中自动执行此类测试)“考虑到序列中的每个数字都需要越来越长的时间……”如果我理解您的意思,我认为这种假设是错误的。9999->10000是一个反例。@Anonymous感谢您的链接。我几乎完成了用Python构建“音节计数应用程序”的工作,IVONA应该可以方便地检查我的工作!我认为,最糟糕的情况是,n位数的发音时间越来越接近log(n),而不是指数。考虑音节的数量(它与发音的时间相当线性)在777777与77 77。刚刚登录,给你一个非常值得的+ 1。