Questions tagged «probability-theory»

挑战涉及随机变量和随机过程的计算概率。

10
不是您的常规豆机
考虑类似的机制这个ASCII版本豆机或plinko / 柏青哥游戏: O ^ \ ^ ^ ^ \ \ ^ / ^ U U U U U 1 2 3 4 5 该O是落下来球。 当它达到时^,有50-50的机会会左右移动。 当它/到达时,它总是向左走。 当它达到时\,它总是正确的。 球最终落入U底部的编号槽之一。问题是,每个低谷结束的概率是多少? 对于这种特殊的情况下,该概率是0.0,0.1875,0.5625,0.125,和0.125,用于分别槽1至5。 这里的3个槽代替5.概率是另一个例子0.5,0.5以及0.0: O / ^ ^ U U U 1 2 3 在这个挑战中,我们将把这个问题推广到一种以任何方式设置任意数量的层的机制。 挑战 编写一个程序或函数,该程序或函数采用该机制的金字塔结构的ASCII表示形式。(通过标准输入/命令行/功能参数输入。) 您可能会认为它带有适当形状的空间,例如 ^ \ ^ ^ ^ …

28
选择强力球号码!
强力球是最近引起美国关注的彩票,因为当前的累积奖金(截至2016年1月11日)是历史上最大的乐透奖金,约为15亿美元。 强力球运动员从69个编号的白球中选择5个不同的数字,并从26个编号的红球中选择1个“强力球”数字。如果他们的五个白球选择与按任何顺序绘制的内容相匹配,并且选择了正确的“强力球”号码,他们将赢得大奖。 因此,赢得大奖的机会是1 (69 choose 5)*(26 choose 1)或((69*68*67*66*65)/(5*4*3*2*1))*26,即292,201,338中的1 没有人在2016年1月9日的最新抽奖中赢得大奖,但是也许有人会在美国东部时间2016年1月13日晚上10:59赢得下一张抽奖。 挑战 编写一个模拟强力球绘图的程序或函数,不输入任何内容,而是输出1至69之间的5个不同的随机数,然后输出1至26之间的1个随机的“ Powerball”数字(可以重复5个之一)初始数字)。 “强力球”数字应始终是输出中的最后一个数字,但其他前5个数字的顺序无关紧要。 这6个数字应以十进制输出,以空格分隔或换行符分隔,并带有一个可选的尾随换行符。输出中不允许使用逗号,方括号和其他字符。 因此,这些将是有效的输出(使用最后一张图中的数字): 32 16 19 57 34 13 32 16 19 57 34 13 所有292201338可能的结果都应该具有统一的可能性。您可以使用内置的伪随机数生成器,并假定它们符合此标准。 这是可在Python 2或3中使用的简单参考实现: import random print(' '.join(map(str, random.sample(range(1,70), 5) + [random.randint(1, 26)]))) 以字节为单位的最短代码获胜。 请注意,我与强力球没有任何隶属关系,也不是真的建议您参加比赛。但是,如果您从这里的一个程序生成的数字中赢得任何收益,那么我相信我们很乐意听到这一消息。:D

7
这些骰子是非传递性的吗?
非传递性骰子是违反概率论直觉的漂亮小玩具。对于此挑战,我们需要一些定义: 考虑两个骰子一个和乙这是在同一时间抛出。我们说,一个 节拍 乙,如果概率一个显示出比数量较多乙严格小于的概率大于乙出比大数量的一个。 现在考虑一组三个带有标签A,B,C的骰子。这样的一组骰子被称为非传递,如果 任一甲节拍乙,乙节拍Ç和Ç节拍甲 或Ç节拍乙,乙节拍甲和甲节拍Ç。 作为我最喜欢的示例之一,请考虑Grime骰子,它具有以下方面: A: 3 3 3 3 3 6 B: 2 2 2 5 5 5 C: 1 4 4 4 4 4 有趣的是,每个骰子的平均值是3.5,就像常规骰子一样。 可以证明: A以7/12的概率击败B。 B以7/12的概率击败C。 C以25/36的概率击败A。 现在这些特定的骰子甚至变得更奇怪了。如果我们将每个骰子掷两次,然后将结果相加,那么拍子的顺序就会颠倒: B击败A的可能性为85/144。 C以85/144的概率击败B。 A击败C的可能性为671/1296。 让我们用此属性Grime-nontransitive调用一组骰子。 另一方面,如果骰子在使用两次抛出时仍保持其原始循环,则将它们称为非传递性强。(如果两次抛出都没有循环,我们可以简单地将它们称为非传递式。) 挑战 给出三个六面的骰子,确定哪些上述性能这组具有,和下面的字符串输出的一个:none,nontransitive,Grime-nontransitive,strongly nontransitive。 您可以编写程序或函数,通过STDIN,命令行参数,提示或函数参数接受输入,然后将结果写入STDOUT或以字符串形式返回。 您可以假设所有边都是非负整数。您不能假定边或骰子的顺序特殊。您可以采用任何方便的列表或字符串格式输入。 这是代码高尔夫球,因此最短的答案(以字节为单位)获胜。 测试用例 none 1 2 …

30
1 / N的概率
因为没有足够的简单代码挑战,所以: 创建一个可选的未命名程序或函数,给定(通过任何方式)整数1≤N≤10000,以伪随机概率1 / N输出您语言的True值,否则为False。 请注意,命名要求已被删除。随意编辑答案和分数。 某些语言的True和False使用1(或-1)和0,也可以。 例: 输入测试示例: 4 -> True 4 -> False 4 -> False 4 -> False 4 -> False 4 -> True 4 -> False 4 -> False 即给出4;它会以25%的机会返回True,并以75%的机会返回False。

8
激流独木舟
您正在划一条独木舟在一条相当快的激流河上。突然,您的船桨爆炸了,您发现自己处在危险的境地,没有任何船桨,使河流急速驶下。幸运的是,您仍然具有编程技能,因此您决定在独木舟旁边雕刻一个程序,以帮助您在急流中生存。但是,独木舟侧面没有太多的表面可用来编写程序,因此您必须使程序尽可能短。 河流可以表示为8 x 16的网格。我们将在列上标记数字0为7,在行上标记数字0为15。 y --------15 --------14 --------13 --------12 --------11 --------10 --------9 --------8 --------7 --------6 --------5 --------4 --------3 --------2 --------1 --------0 01234567 x 上图:一条完全平静,普通的河流,没有障碍物。自然,这不是您要走的河。 您从坐标(4,0)开始,然后从那里不受控制地向河上移动(即向量 (0,1)),直到撞到一块岩石(o在这些示例中以表示)。当您撞到一块岩石时,您将有55%的机会越过岩石的左侧(即vector (-1,1)),而有45%的机会就越过岩石的右侧(即vector (1,1))。如果独木舟位于最左边或最右边的列上,它将始终向中心移动。如果没有岩石,它将直接向上移动。 y ----x---15 ----xo--14 -o--x---13 ----x---12 ---ox---11 ---x----10 ---xo---9 ---ox---8 ----xo--7 -----x--6 ----ox--5 -o--x---4 ----x---3 ----xo--2 ----x---1 ----x---0 01234567 上图:用字符表示的独木舟可能走的路线 x 给定河流的地图,编写一个程序,将输出在给定列上划独木舟的可能性。 以适合您程序的任何一种方法接受输入(例如STDIN,命令行参数, …

3
精瘦的豆子机
向人们介绍离散概率分布概念的经典示例是bean机器。这台机器有大量的大理石从顶部狭窄的通道掉落,然后它们撞到交错的销钉行,在每个销钉处,大理石撞件可能会落到销钉的左侧或右侧。最终,将销钉收集到机器底部的垂直箱中。这台机器的简单图如下所示: | O | | ^ | | ^ ^ | | ^ ^ ^ | | ^ ^ ^ ^ | | ^ ^ ^ ^ ^ | |_|_|_|_|_|_| 在此图中,O表示大理石掉落的位置。每个^都是钉子,大理石在该钉子处有50%的机会移动到钉子左侧或右侧的正方形。然后,大理石聚集在设备底部的垃圾箱中,对于足够多的大理石,垃圾箱中的大理石堆叠高度将类似于离散的二​​项分布。 挑战 对于这一挑战,您将基于上图来计算bean机器的最终概率分布。这些图被解释为大理石通过的二维“程序”,即朝向侧场或当前场下方的场。当弹珠到达机器底部时,它们会被计算为概率分布。为了使它有趣,这些图将包含比简单的源代码和引脚更多的字段。一个示例图是: | O | | ^ | | ^ / | | ^ | ^ | | <^- …

30
使用恒定的随机源选择一个介于0和n之间的随机数
任务 给定的正整数n小于2^30您选择以任何方式指定的输入,您的代码应输出介于0和之间的随机整数n,包括。您生成的数字应该随机选择。也就是说,从0到的每个值都n必须以相等的概率出现(请参阅规则和警告)。 规则和警告 您的代码可以假定您的语言或标准库中内置的任何声称统一随机的随机数生成器实际上都是统一的。那就是您不必担心所使用的随机源的质量。然而, 您必须确定,如果您使用的随机源是统一的,则您的代码正确地输出了从0到的统一随机整数n。 调用内置或库随机函数时,任何参数都必须是常量。也就是说,它们必须完全独立于输入值。 您的代码可能以1的概率终止,而不是保证终止。 笔记 randInt(0,n) 是无效的,因为它将输入作为内置函数或库函数的参数。 rand()%n通常不会给出统一的随机数。作为betseg提供的示例,如果intmax == 15和n = 10,那么您获得的可能性0-5将比更高6-10。 floor(randomfloat()*(n+1)) 由于0到1之间的可能浮点值的数量有限,因此通常也不会给出统一的随机数。

3
实施简化字距调整
介绍 字距调整是指调整文本字母之间的间距。例如,考虑Top用以下三个字形写的单词: ##### ..... ..... ..#.. ..... ..... ..#.. ..##. .###. ..#.. .#..# .#..# ..#.. .#..# .#..# ..#.. ..##. .###. ..... ..... .#... ..... ..... .#... 我们可以用点填充字形之间的间隙并完成它,但是间隙看起来太宽了。相反,我们将字形滑动到左侧,以便它们几乎可以接触: #####........ ..#.......... ..#..##..###. ..#.#..#.#..# ..#.#..#.#..# ..#..##..###. .........#... .........#... 看起来好多了!请注意,的条形图T在的左边框上方o。在此挑战中,您的任务是为此类矩形字形实现一个简单的字距调整程序。 字距调整过程 考虑具有.和#形状相同的两个矩形2D字符数组。在简单的字距调整过程中,我们首先将数组并排放置,中间放置一列.s。然后,我们将#右阵列中的每一个向左移动一步,直到#左右阵列中的s正交或对角相邻。字距调整的结果是引入相邻s 之前的步骤#。您的任务是实施此过程。 让我们举个例子: Inputs: ..### #.... #.... ..##. ...#. ...## ..### ....# Process: …
24 code-golf  grid  code-challenge  atomic-code-golf  code-golf  combinatorics  probability-theory  card-games  code-golf  number  geometry  code-golf  decision-problem  chess  code-golf  math  number  sequence  code-golf  string  regular-expression  code-golf  arithmetic  integer  code-golf  math  array-manipulation  code-golf  number  decision-problem  integer  code-golf  string  ascii-art  kolmogorov-complexity  code-golf  decision-problem  graph-theory  binary-matrix  code-golf  string  parsing  code-golf  string  code-golf  morse  code-golf  code-golf  string  code-golf  ascii-art  cellular-automata  code-golf  binary  base-conversion  code-golf  arithmetic  decision-problem  integer  checksum  code-golf  matrix  linear-algebra  code-golf  code-golf  game  code-golf  sequence  binary  code-golf  combinatorics  optimization  code-golf  decision-problem  quine  code-golf  rational-numbers  bitwise  code-golf  string  permutations  code-golf  kolmogorov-complexity  unicode  code-golf  ascii-art  number  code-golf  number  integer  binary  base-conversion  code-golf  array-manipulation  code-golf  chemistry  code-golf  number  sequence  fibonacci  code-golf  matrix  optimization  code-golf  number  code-golf  math  number  sequence  code-golf  math  array-manipulation  matrix  linear-algebra  code-golf  kolmogorov-complexity  cops-and-robbers  cops-and-robbers  code-golf  tips  basic  code-golf  decision-problem  binary  tiling  game  king-of-the-hill  python  code-golf  c  code-golf  ascii-art  code-golf  string  kolmogorov-complexity  alphabet  code-golf  number  code-golf  string  code-golf  number  sequence  integer  code-golf  number  permutations  restricted-complexity  restricted-time 

22
混合骰子辊的频率分布
应对这一挑战的后续行动 给定一组混合的骰子,输出滚动所有骰子并汇总每个骰子上的掷骰数的频率分布。 例如,考虑1d12 + 1d8(滚动1个12面模具和1个8面模具)。最大和最小掷骰分别是20和2,类似于2d10掷骰(2个10面骰子)。但是,1d12 + 1d8分布比2d10:[1, 2, 3, 4, 5, 6, 7, 8, 8, 8, 8, 8, 7, 6, 5, 4, 3, 2, 1]vs 更平坦[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]。 规则 频率必须以与频率对应的总和的升序排列。 允许用相应的总和来标记频率,但不是必需的(因为可以从所需的顺序中推断出总和)。 您不必在输出超出您的语言可表示的整数范围的情况下处理输入。 不允许前导零或尾随零。输出中仅应出现正频率。 您可以采用任何合理的格式输入(骰子列表([6, …

22
多个骰子辊的频率分布
给定两个正整数a和b,输出滚动a侧b模a时间并累加结果的频率分布。 如果掷骰子的每个可能序列出现一次,则频率分布会列出每个可能总和的频率。因此,频率是其和等于的整数b**a。 规则 频率必须以与频率对应的总和的升序排列。 允许用相应的总和来标记频率,但不是必需的(因为可以从所需的顺序中推断出总和)。 您不必在输出超出您的语言可表示的整数范围的情况下处理输入。 不允许前导零或尾随零。输出中仅应出现正频率。 测试用例 格式: a b: output 1 6: [1, 1, 1, 1, 1, 1] 2 6: [1, 2, 3, 4, 5, 6, 5, 4, 3, 2, 1] 3 6: [1, 3, 6, 10, 15, 21, 25, 27, 27, 25, 21, 15, 10, 6, 3, …

30
龙曲线序列
所述龙曲线序列(或常规纸张折叠序列)是一个二进制序列。 a(n)通过对的最低有效1的左位求反得到n。例如要进行计算,a(2136)我们首先将其转换为二进制: 100001011000 我们发现我们的最低有效位 100001011000 ^ 左移一点 100001011000 ^ 并返回其否定 0 任务 给定一个正整数作为输入,输出a(n)。(您可以按整数或布尔值输出)。您应该努力使代码尽可能地小(以字节为单位)。 测试用例 这是顺序的前100个条目 1 1 0 1 1 0 0 1 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 0 1 1 0 0 1 0 0 1 1 1 0 …

24
采样帕累托分布
该Pareto分布是出现了很多自然的概率分布。它具有许多特殊属性,例如无穷均值。在此挑战中,您将输出从此分布中采样的数字。 对于所有大于或等于1 的Pareto分布,均被定义为大于或等于x概率。1/xx 因此,从此分布采样的数字的概率为1,大于或等于1,概率为1/2的情况下,大于或等于2;概率为1/3,大于或等于的情况下,大于或等于3 11.4的概率恰好为1 / 11.4,依此类推。 由于将对这种分布进行采样,因此程序或函数将不输入任何内容,而是输出具有上述概率的随机数。但是,如果您的程序由于浮点数印象而不能完全匹配上述概率,那就可以了。有关更多详细信息,请参见挑战的底部。 (确切地说,这称为阿尔法为1且下界为1的帕累托分布) 这是从此分布中提取的10个示例: 1.1540029602790338 52.86156818209856 3.003306506971116 1.4875532217142287 1.3604286212876546 57.5263129600285 1.3139866916055676 20.25125817471419 2.8105749663695208 1.1528212409680156 请注意,其中有5个低于2,有5个高于2。由于这是平均结果,因此当然可以更高或更低。 您的答案仅需在浮点类型,实数类型或您使用的任何其他类型的限制范围内是正确的,但您必须能够表示至少3个十进制精度的数字,并且最多可表示1,000,000个数字。如果不确定是否可以,请随时询问。 这是代码高尔夫。 有关不精确度的详细信息: 对于每个范围[a, b],1 <= a < b样本落入该范围的理想概率为1/a - 1/b。您的程序产生该范围内的数字的概率必须0.001为1/a - 1/b。如果X是程序的输出,则要求|P(a <= X <= b) - (1/a - 1/b)| < 0.001。 请注意,通过使用a=1且b足够大的上述规则,可能是您的程序必须以至少0.999的概率输出大于或等于1的数字。其余时间它可能会崩溃,输出Infinity或执行其他任何操作。 我可以肯定地说,形式为1/1-x或的现有提交(1/x其中或或x随机浮动)都满足此要求。[0, 1)(0, 1)[0, 1]

2
准备去死?
背景 桌上型角色扮演游戏中ennui的一种来源是处理涉及许多骰子的掷骰。施放解散咒语可能是瞬间的,但滚动并加在一起40个骰子肯定不是! rpg.stackexchange.com上讨论了许多处理此问题的建议。但是,其中一些(例如使用滚轴程序或平均骰子)会剥夺玩家的一些乐趣和控制感。其他方法,例如滚动4个骰子并将总数乘以10,会使结果波动更大(平均骰子作用相反)。 这个问题涉及减少骰子掷骰数而不改变平均结果(均值)或其摆动(方差)的方法。 记数法和数学 在这个问题中,我们将使用以下表示法来表示骰子掷骰: n d k(例如40d6)是指k面模具的n卷总和。 n d k * c(例如4d6 * 10)描述将结果乘以常数c。 我们还可以添加滚动(例如4d6 * 10 + 40d6)和常数(例如4d6 + 10)。 对于单模辊,我们可以证明: 均值:E [1d k ] =(k + 1)/ 2 方差:Var(1d k)=(k-1)(k + 1)/ 12 利用均值和方差的基​​本属性,我们可以进一步推断出: 均值:E [ m d k * a + n d l * …

30
用给定的宽度绘制空心的#
我从Codingame那里获得了这一挑战,并且对比我的更好的解决方案感到好奇: 通过标准输入给定宽度,在给定的宽度和长度上绘制一个空心的#号正方形。 例: 5结果 ##### # # # # # # ##### 我用python解决了这个问题,所以我对其他python代码特别感兴趣。但是,请随时以所需的任何语言发布您的解决方案。
21 code-golf  string  ascii-art  number  code-golf  grid  code-golf  string  ascii-art  code-golf  alphabet  cipher  code-golf  math  number  code-golf  quine  code-golf  palindrome  polyglot  code-golf  number  array-manipulation  counting  logic  code-golf  string  primes  binary  decision-problem  code-golf  ascii-art  kolmogorov-complexity  popularity-contest  code-golf  probability-theory  code-golf  string  code-golf  python  polyglot  programming-puzzle  c++  code-golf  math  code-golf  binary  integer  bitwise  code-golf  rational-numbers  code-golf  string  palindrome  code-golf  ascii-art  code-golf  code-golf  string  fibonacci  code-golf  math  sequence  code-golf  code-golf  string  palindrome  code-golf  string  code-golf  math  primes  source-layout  code-golf  sequence  binary  integer  code-golf  math  arithmetic  game  code-golf  restricted-source  palindrome  code-golf  restricted-source  palindrome  code-golf  combinatorics  binary  code-golf  string  math  code-golf  ascii-art  number  code-golf  cipher  code-golf  base-conversion  counting  code-golf  sequence  random  classification  code-golf  string  subsequence  code-golf  permutations  code-golf  string  code-golf  string  cipher  code-golf  kolmogorov-complexity  arithmetic  integer  code-golf  quine  markov-chain  code-golf  string  code-golf  code-golf  ascii-art  maze 

9
纸牌游戏中的手形
一副纸牌是S西服和R等级的直角乘积。许多(尽管不是全部)纸牌游戏使用S=4和R∊{6,8,13}。一副H牌从甲板上发出。它的分布(也称为“手形”)是一个数组,用于描述您从每套西服中获得多少张牌,而忽略西服的顺序(因此,就像是多套)。鉴于分布D满足len(D)=S,1≤sum(D)=H≤S×R,0≤D[i]≤R,D[i]≥D[i+1],发现它发生的概率。 输入:一个整数R和一个数组D。 输出:小数点后至少5位数字的概率;尾随零可以被跳过;科学记数法还可以。 禁止漏洞。最短的胜利。 测试: R D probability 13 4 4 3 2 -> 0.2155117564516334148528314355068773 13 5 3 3 2 -> 0.1551684646451760586940386335649517 13 9 3 1 0 -> 0.0001004716813294328274372174524508 13 13 0 0 0 -> 0.0000000000062990780897964308603403 8 3 2 2 1 -> 0.4007096203759162602321667950144035 8 4 2 1 1 -> 0.1431105787056843786543452839337155 …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.