Questions tagged «probability-theory»

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

8
整理列表
考虑“挑选”嵌套列表的过程。拣配定义如下: 如果参数是列表,则从列表中随机(均匀地)选取一个元素,然后从中选择一个元素。 如果参数不是列表,则只需将其返回即可。 Python中的示例实现: import random def pick(obj): if isinstance(obj, list): return pick(random.choice(obj)) else: return obj 为简单起见,我们假定嵌套列表仅包含整数或其他嵌套列表。 给定任何列表,就有可能创建一个扁平化的版本,该版本无法通过来区分pick,即从中进行选择会以相同的概率产生相同的结果。 例如,“拼合”列表 [1, 2, [3, 4, 5]] 产生清单 [1, 1, 1, 2, 2, 2, 3, 4, 5] 。简单展平是无效的原因是,子列表的元素被选择的可能性较低,例如,列表中[1, [2, 3]]的1被选择的可能性为2/4 = 1/2,而3和4的被选择的可能性为1/4每个机会。 还要注意,从单例列表中进行选择等同于从其元素中进行选择,而从空列表中进行选择则没有任何意义。 挑战 给定一个嵌套的非负整数列表,返回一个扁平化的非负整数列表,从中进行拾取会以相同的概率产生相同的结果。 这是代码高尔夫球,因此最短的有效答案(以字节为单位)获胜。 技术指标 输入[2, 3, 4],[2, 2, 2, 2, …

7
采样随机非递减序列
输入:两个整数n和k,以便于代码输入的任何形式给出 输出由k个整数组成的随机非递减序列,每个整数的范围为1到n。应该从k个整数的所有非递减序列中均匀选择样本,该整数的范围在1到n之间。 输出可以采用您认为方便的任何合理格式。 您可以使用自己喜欢的库/语言提供的任何伪随机生成器。 我们可以假设整数n,k> 0。 例 假设n,k =2。非递减序列为 1,1 1,2 2,2 每个序列应具有输出概率1/3。 限制 对于k = 20和n = 100,您的代码应在不超过几秒钟的时间内运行。 什么不起作用 如果仅从1到n范围内随机采样每个整数,然后对列表进行排序,则不会获得均匀分布。

4
(有点)小学生生日悖论
背景 在生日悖论是概率论这颠覆流行的问题(大多数人)的数学直觉。问题陈述是: 给定N个人,他们中至少有两个生日相同(不考虑年份)的概率是多少? 通常通过完全忽略leap日来简化此问题。在这种情况下,N = 23的答案是P(23)≈0.5072972(作为常见示例)。链接的维基百科文章解释了如何得出这种可能性。另外,此Numberphile视频也做得很好。 但是,对于这个挑战,我们想做正确的事,不要忽略leap年。这有点复杂,因为现在需要添加2月29日,但是这个特定的生日比其他所有生日都少。 我们还将使用完整的leap年规则: 如果一年可被400整除,则表示a年。 否则,如果一年可被100整除,则不是a年。 否则,如果将一年除以4,则表示a年。 否则,这不是a年。 困惑?这意味着1700、1800、1900、2100、2200、2300年不是leap年,而是1600、2000、2400年(以及其他任何可以除以4的年份)。该日历每400年重复一次,我们将假设这400年中的生日统一分配。 现在N = 23的校正结果为P(23)≈0.5068761。 挑战 给定一个整数1 ≤ N < 100,请N考虑the年规则,确定至少两个人中有相同生日的概率。结果应该是浮点数或定点数,至少精确到小数点后6位。截断尾随零是可以接受的。 您可以编写程序或函数,通过STDIN(或最接近的替代方案),命令行自变量或函数自变量获取输入,并通过STDOUT(或最接近的替代方案),函数返回值或函数(out)参数输出结果。 您的解决方案必须能够在几秒钟内产生所有99个输入的输出。这主要是为了排除使用大量样本的蒙特卡洛方法,因此,如果您以过于缓慢的深奥语言使用主要是快速且精确的算法,那么我愿意在这条规则上留有余地。 测试用例 这是完整的结果表: 1 => 0.000000 2 => 0.002737 3 => 0.008195 4 => 0.016337 5 => 0.027104 6 => 0.040416 7 => 0.056171 8 => 0.074251 …

20
计算字符串的直方图熵估计
编写一个程序或函数来估计给定字符串的香农熵。 如果一个字符串有n个字符,d个 不同的字符,x i是第i个不同的字符,P(x i)是该字符出现在字符串中的概率,则我们对该字符串的香农熵估计为: 对于此挑战中的估计,我们假设一个字符出现在字符串中的概率就是该字符出现的次数除以字符总数。 句点后,您的答案必须准确到至少3位数字。 测试用例: "This is a test.", 45.094 "00001111", 8.000 "cwmfjordbankglyphsvextquiz", 122.211 " ", 0.0

16
给定事件的所有组合的概率
给定一系列概率在0.0到1.0之间的事件,请生成并推导每种组合发生的概率。您可能会假设以您选择的语言提供的任何构造形式提供了数字序列。 这是一个例子。您可能假定序列组合的长度适合内存: { 0.55, 0.67, 0.13 } 程序应打印每个组合以及该序列出现的相关概率。1表示输入序列的索引中的事件已发生,0表示该事件未发生。所需的输出如下(我不在乎打印工作,这只是出于算法目的的目的): [0,0,0] = (1 - 0.55) * (1-0.67) * (1-0.13) = 0.129195 [0,0,1] = (1 - 0.55) * (1-0.67) * (0.13) = 0.019305 [0,1,0] = (1 - 0.55) * (0.67) * (1-0.13) = 0.262305 [0,1,1] = (1 - 0.55) * (0.67) * (0.13) …

4
一周中压缩的天数
输入星期几列表,则输出列表中最短的排序表示形式。 输入的格式是由一个或多个双字符子串的字符串Su(星期日), Mo(星期一), Tu(等), ,We,Th, Fr和Sa。输入不一定必须以排序的顺序给出。 要将输入转换为输出格式, 从星期天开始按星期几对输入进行排序(例如ThMoSaSuFrTuWe-> SuMoTuWeThFrSa)。 如果不引起歧义,请将缩写词减少到一个字母。例如,之所以SuMoTuWe成为,SMTW是因为第一个S不可能在星期六,因为这样会使输出未排序(与T相同)。但是,ThFrSa应该成为ThFS,因为星期二和星期四都在星期五之前,并将其减小以TFS产生歧义。 如果输出为now MTWTF,则D改为输出(代表“ 工作日 s”)。同样,SS应该成为E一周结束。最后, SMTWTFS应该成为A对所有天。 输入和输出都必须是单个字符串。 由于这是code-golf,因此以字节为单位的最短代码为准。 测试用例: In Out | In Out -----------------------|-------------------- SuTu STu | SuTuWe STW SuTuSa STuS | SuWeTh SWT TuThSa TTS | TuThSu STT Su Su | Sa Sa WeTh WT | FrTh ThF WeTu …

5
修复损坏的随机函数
朋友的计算机上有一个附加卡,该附加卡可生成一个从1到5(含1和5)的完美随机数。不幸的是,他们以某种方式将可乐洒在上面,现在它从1到4的所有数字仅生成2。幸运的是,随机性得以保留,但是2的概率为80%,5的概率为20%,并且没有生成1、3或4。使用此随机源(称为“随机源” BrokenRand()或类似名称),编写一个工作的随机数生成器,该生成器以与原始源相同的完全随机性,以相等的20%概率产生1到5个数字。 最短的程序获胜。BrokenRand由按人口统计选择的客户服务中心咨询机构公正地拨打最少电话的奖励积分,按年龄和性别(即我)细分。

3
查找字符串中的模式
在这种挑战下,您的任务是找到具有给定结构的子字符串。 输入项 您的输入应为两个非空的字母数字字符串,一个模式 p和一个text t。这个想法是,的每个字符都p代表一个连续的非空子字符串,t该子字符串彼此相邻出现,并p表示它们的串联。相同的字符对应于相同的子字符串。例如,模式aa代表任何非空正方形(通过将较短的字符串与其自身连接而获得的字符串)。因此,模式aa可以匹配子字符串byebye,并且每次a匹配bye。 输出量 如果文本t包含p匹配的子字符串,则您的输出应为该子字符串,并:在与的字符相对应的字符串之间插入冒号p。例如,如果我们有t = byebyenow和p = aa,那么bye:bye它是可接受的输出。匹配子字符串可能有多个选择,但是您只能输出其中之一。 如果t不包含匹配的子字符串,则您的输出将是悲伤的表情:(。 规则和说明 的不同字符p可以对应相同的子字符串,因此p = aba可以匹配字符串AAA。请注意,这些字符必须对应于非空字符串;特别是,如果p长于t,则输出必须为:(。 您可以编写完整的程序或函数,还可以更改两个输入的顺序。最低字节数获胜,并且不允许出现标准漏洞。 测试用例 以格式给出pattern text -> output。注意,可能存在其他可接受的输出。 a Not -> N aa Not -> :( abcd Not -> :( aaa rerere -> re:re:re xx ABAAAB -> A:A MMM ABABBAABBAABBA -> ABBA:ABBA:ABBA x33x 10100110011001 -> 10:1001:1001:10 …
17 code-golf  string  code-golf  ascii-art  geometry  code-golf  ascii-art  code-golf  sequence  stack  code-challenge  number  sequence  answer-chaining  code-golf  code-challenge  math  combinatorics  binary-matrix  code-golf  number  code-golf  cryptography  bitwise  code-golf  sudoku  code-golf  brainfuck  metagolf  code-golf  probability-theory  number-theory  primes  fewest-operations  factoring  golf-cpu  code-golf  restricted-source  code-golf  graphical-output  sequence  binary  code-golf  tips  c#  code-golf  geometry  code-golf  graphical-output  fractal  code-golf  number  sequence  code-golf  number  array-manipulation  popularity-contest  game  board-game  code-golf  puzzle-solver  grid  code-golf  ascii-art  geometry  grid  tiling  code-golf  ascii-art  whitespace  balanced-string  code-golf  card-games  king-of-the-hill  javascript  code-golf  whitespace  balanced-string  code-golf  code-golf  math  abstract-algebra  code-golf  java  code-golf  interpreter  stack  code-golf  base-conversion  code-golf  tips  code-golf  ascii-art  geometry  brainfuck  metagolf  code-challenge  math  quine  code-generation  code-golf  number  kolmogorov-complexity  arithmetic  expression-building  code-golf  string  code-golf  quine  popularity-contest  code-golf  base-conversion  code-challenge  image-processing  code-golf  conversion  coding-theory 

20
分解一个数字!
您的任务是使用以下格式分解数字。 这与基本转换类似,不同之处在于digits,您列出了values,而不是在基本列表中列出,这样列表就加到了输入上。 如果给定的基为n,则列表中的每个数字都必须采用的形式k*(n**m),其中0<=k<n和m在整个列表中都是唯一的。 眼镜 任何合理的输入/输出格式。您的程序/功能需要2个输入并输出一个列表。 输出列表可以是任何顺序。 0 可以排除或包含。 0允许领导。 允许内置。 测试用例 number base converted list input1 input2 output 123456 10 [100000,20000,3000,400,50,6] or [6,50,400,3000,20000,100000] 11 2 [8,2,1] or [0,0,0,0,8,0,2,1] 727 20 [400,320,7] 101 10 [100,1] or [100,0,1] 计分 这是代码高尔夫球。以字节为单位的最短解决方案获胜。
16 code-golf  number  sequence  number-theory  base-conversion  code-golf  bitwise  hashing  code-golf  string  ascii-art  whitespace  code-golf  math  code-golf  code-golf  image-processing  counting  code-golf  math  arithmetic  checksum  code-golf  code-golf  math  arithmetic  number-theory  code-golf  array-manipulation  random  code-golf  string  code-golf  math  ascii-art  base-conversion  code-golf  graphical-output  geometry  3d  code-golf  math  linear-algebra  matrix  code-golf  math  number  sequence  code-golf  array-manipulation  code-golf  math  matrix  linear-algebra  code-golf  number  sequence  counting  code-golf  string  code-golf  string  restricted-source  quine  sorting  code-golf  string  geometry  code-golf  string  code-golf  networking  code-golf  base-conversion  code-golf  math  matrix  code-golf  arithmetic  linear-algebra  matrix  code-golf  number  arithmetic  grid  code-golf  number  source-layout  code-golf  string  bitwise  checksum  code-golf  array-manipulation  code-golf  string  probability-theory  code-golf  tips  code-golf  sequence  code-golf  string  math  sequence  calculus  code-golf  string  palindrome  bioinformatics  code-golf  math  combinatorics  counting  permutations  code-golf  parsing  logic-gates  code-golf  arithmetic  number-theory  combinatorics  code-golf  math  sequence  polynomials  integer  code-golf  string  ascii-art  chess  code-golf  string  code-golf  number  code-golf  string  ascii-art  parsing  code-golf  code-golf  number  natural-language  conversion  code-golf  arithmetic  code-golf  string  code-golf  ascii-art  decision-problem 

6
那个概率分布是谁?
介绍 在此挑战中,将为您提供与某些概率分布无关地绘制的非负浮点数的列表。您的任务是从数字推断该分布。为了使挑战切实可行,您只有五个分布可供选择。 U,间隔[0,1]上的均匀分布。 T,模式c = 1/2时间隔[0,1]上的三角分布。 B,则间隔[0,1]上的beta分布具有参数α=β= 1/2。 E,间隔[0,∞)上的指数分布,速率为λ= 2。 G,间隔为[0,∞)且参数k = 3和θ= 1/6时的伽马分布。 请注意,上述所有分布的均值均精确为1/2。 任务 您的输入是一个非负浮点数数组,长度在75到100之间(含75和100)。您的输出应为字母之一UTBEG,根据您猜测数字是从上述分布中的哪一个得出的。 规则和计分 您可以提供完整的程序或功能。不允许出现标准漏洞。 在此存储库中,有五个文本文件,每个分发文件一个,每个文件的长度恰好为100行。每行包含一个由逗号分隔的列表,其中包含75至100个浮点数,它们独立于分布而绘制,并被截断为小数点后的7位数字。您可以修改定界符以匹配您语言的本机数组格式。要获得答案的资格,您的程序应正确地对每个文件中的至少50个列表进行分类。有效答案的分数是字节数+错误分类列表的总数。最低分获胜。

3
建立一个程序来分析硬币翻转顺序选择
在我的一本老书中的一个谜题中,定义了一个游戏,其中两个玩家选择掷硬币的顺序,他们认为当硬币被反复掷硬币时,硬币掷序列会首先出现。(实际上掷骰子是奇数,甚至是掷骰子,但是就问题对等而言,这个小细节并不重要。) 注意,如果玩家1选择,TTT而玩家2选择HTT,则该玩家2赢得游戏的机会为7/8,因为唯一的方法TTT可能HTT是前三局都是尾巴。 您的工作是创建一个程序或函数,以推断出两个选定序列之一首先出现的可能性。您的程序将接受两行输入(或两个字符串作为参数),每行代表长度为10或更短的序列: HTT TTT 并以小数或小数形式输出第一个玩家获胜的概率: 7/8 0.875 以任何语言执行此操作的最短代码都会胜出。

14
递归级联[N]的累积和与M次迭代
取两个正整数N,M并[N]通过M迭代创建的串联累积和。输出最后一次迭代的结果。 串联累积和的定义: 以数字开头N并定义顺序X = [N] 追加到X的累积和X 重复步骤2 M次。 向量的累加和X = [x1, x2, x3, x4]为:[x1, x1+x2, x1+x2+x3, x1+x2+x3+x4]。 N = 1和的示例M = 4: P =累积和函数。 M = 0: [1] M = 1: [1, 1] - X = [1, P(1)] = [[1], [1]] M = 2: [1, 1, 1, 2] - X …
14 code-golf  number  sequence  code-golf  number  sequence  code-golf  binary-matrix  code-golf  math  tips  javascript  algorithm  code-golf  string  code-golf  number  sequence  code-golf  math  arithmetic  parsing  code-golf  number  sequence  primes  code-golf  string  ascii-art  geometry  integer  code-golf  geometry  code-golf  number  array-manipulation  code-golf  math  geometry  code-golf  number  sequence  arithmetic  integer  code-golf  string  kolmogorov-complexity  code-golf  number  code-golf  number  chess  code-golf  sequence  decision-problem  subsequence  code-golf  math  number  primes  code-golf  primes  permutations  code-golf  integer  probability-theory  statistics  code-golf  string  code-golf  sequence  decision-problem  parsing  board-game  code-golf  binary  graph-theory  code-golf  board-game  classification  tic-tac-toe  code-golf  ascii-art  polyglot  code-golf  date  code-golf  geometry 

23
两个六面骰子100卷的总和
假设您有两个六面骰子。将线对滚动100次,计算每对的总和。打印出每个总和发生的次数。如果从未汇总过一笔总和,则必须包括零或某种方式以标识该特定笔从未从未汇总过。 示例输出:[3、3、9、11、15、15、11、15、7、8、3] 总和索引中表示了总和的滚动次数-2 在此示例中,两个总和被滚动3次([2-2]),三个总和被滚动3次[[3-2]),四个总和被滚动9次([4-2]),依此类推上。掷骰子总和并不重要(5和2与6和1相同) 只要您解释应该如何读取数据,“丑陋”的输出就可以了(尾随零,大量额外输出,奇怪的数据表示方式等)。

2
Pólya缸翻转
问题陈述 Pólya再次玩着他的骨灰盒,他希望您能帮助他计算一些概率。 在此骨灰盒实验中,Pólya的骨灰盒最初包含1个红色和1个蓝色珠子。 对于每次迭代,他进入并取回珠子,然后检查颜色并将珠子放回back。 然后,他掷出一枚普通硬币,如果硬币落在硬币头上,他会在缸中插入相当数量的6面相同颜色的彩色骰子骰子,如果硬币落在尾巴上,他将从缸中取出一半的相同颜色的硬币(使用整数除法-因此,如果所选颜色的珠子数量为奇数,他将删除(c-1)/2c是该颜色的珠子数量) 给定整数n≥0且十进制r> 0,则将n次迭代后珠子颜色之间的比率在最短的字节数中大于或等于r的概率赋予2个小数位。 一组示例迭代: 令(x,y)定义骨灰盒,使其包含x个红色小珠和y个蓝色小珠。 Iteration Urn Ratio 0 (1,1) 1 1 (5,1) 5 //Red bead retrieved, coin flip heads, die roll 4 2 (5,1) 5 //Blue bead retrieved, coin flip tails 3 (3,1) 3 //Red bead retrieved, coin flip tails 4 (3,4) 1.333... //Blue bead …

1
XKCD支架概率
今天的XKCD是一种运动比赛风格的支架,其中的参赛者都是众所周知的名字,分成几组可能令人困惑的名字。 根据给定回合中每个参赛者赢得该回合的机会均等,给出给定参赛者将赢得整个锦标赛的概率。 输入值 参赛者的名字。 XKCD喜欢使用所有大写字母,但是您可以使用任何对您有意义的大小写,也可以使您的输入不区分大小写。 您可以假定所有输入名称均有效。 Jeff Gordan可能是的拼写错误Jeff Gordon。您可以选择接受其中一个或两个。 一些名称包括标点符号,例如H. G. Wells和Joseph Gordon-Levitt。您可以选择接受带或不带标点符号的名称(或同时包含两者)。上面没有标点的将是H G Wells和Joseph Gordon Levitt 同样,你可以选择接受或者Beyoncé或Beyonce或两者 这Mister/Fred Astaire/Rogers条线有点奇怪。对于这一个,你必须接受以下所有的:Fred Rogers,Mister Rogers和Fred Astaire 输出量 给定参赛者以合理形式赢得整个比赛的概率(例如1/64) 例子 路易斯·阿姆斯特朗(Louis Armstrong)可能会参加6轮比赛,每轮有两名选手,因此他有1/64的获胜机会。 艾伦·里克曼(Alan Rickman)可能会参加7轮比赛,第一轮有3名选手参加,其余的有2名选手参加,因此他有1/192的获胜机会。 为了节省您键入图像中所有名称的工作量,explainXKCD已经将它们制成表格了。我也把它们丢到了这个粘贴桶里。 请注意,explainXKCD中的获胜概率是错误的-它们是应有值的两倍,因为它们大概忘记了最后一轮。感谢您指出@Geobits。

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.