【发布时间】:2018-11-25 05:17:36
【问题描述】:
如果这已经发布,请原谅我 :) 我整天都在想一个有效的解决方案。基本上问题是这样的:假设你必须掷硬币 30 亿次,并且想要一个函数在所有这些翻转后返回正面的数量。一种可能的解决方案显然是创建一个 for 循环,迭代 30 亿次,记录有多少正面和反面并返回正面 - 这显然是一个非常低效的解决方案。我想到了二项式概率,但看不出这可以帮助解决这个问题(我可能遗漏了一些非常明显的东西)。
例如说我在函数 NumberOfHeads(flips) 中输入大多数时间(统计上)它可能会返回一些大约翻转 / 2 的数字。但是说翻转 = 30 亿应该仍然有机会(尽管非常苗条到从不)它可能会返回 1000 个正面或其他东西。希望我能很好地解释困扰我的问题 :) 感谢您的回复。
【问题讨论】:
-
这将是一个概率问题 - 计算 1 个正面、2 个正面、3 个正面......等的概率,然后使用这些概率并在它们之间随机选择一次。查找更简单问题的概率,例如 10 次翻转,然后使用该格式计算
n翻转的概率列表。得到概率列表后,就像掷骰子一样,边数不同,权重不同。 -
对于 30 亿次翻转这样的数字,您可以使用 gaussian approximation。
-
抱歉,不清楚。我知道如何计算概率,这不是我要的。我想要一些函数,它会在一定数量的翻转中返回正面数量的随机输出。例如 NumberOfHeads(10) 或 10 次翻转大多会返回 4 到 6,但也有可能返回 0。
-
我不想模拟所有 30 亿次翻转(正如我提到的那样效率低下),也许是一些最有可能返回标准偏差范围内的数字的数学函数。
-
你仍然会使用高斯近似。
标签: algorithm math optimization probability