C#的数学概率-如何在某次尝试中获得3个不同字符的枚举值
嗨,我昨天问了这个问题,没有被人理解,所以这次我会尽量说得更具体一些。情况是这样的 1。我有3个字符:A、B、C,在一个字符数组中,如下所示:C#的数学概率-如何在某次尝试中获得3个不同字符的枚举值,c#,math,probability,C#,Math,Probability,嗨,我昨天问了这个问题,没有被人理解,所以这次我会尽量说得更具体一些。情况是这样的 1。我有3个字符:A、B、C,在一个字符数组中,如下所示: char[] characters = {'A', 'B', 'C'}; 2.在列举这3个字符的所有可能匹配项时,我得到以下示例: Text = A tries = 1 indexes = characters[0] ------------ Text = B tries = 2 indexes = characters[1]
char[] characters = {'A', 'B', 'C'};
2.在列举这3个字符的所有可能匹配项时,我得到以下示例:
Text = A
tries = 1
indexes = characters[0]
------------
Text = B
tries = 2
indexes = characters[1]
------------
Text = C
tries = 3
indexes = characters[2]
------------
Text = AA
tries = 4
indexes = characters[0] characters[0]
------------
Text = AB
tries = 5
indexes = characters[0] characters[1]
------------
Text = AC
tries = 6
indexes = characters[0] characters[2]
------------
Text = BA
tries = 7
indexes = characters[1] characters[0]
------------
Text = BB
tries = 8
indexes = characters[1] characters[1]
------------
Text = BC
tries = 9
indexes = characters[1] characters[2]
------------
Text = CA
tries = 10
indexes = characters[2] characters[0]
------------
Text = CB
tries = 11
indexes = characters[2] characters[1]
------------
Text = CC
tries = 12
indexes = characters[2] characters[2]
3。现在给定特定尝试的次数,我们可以得到此特定尝试的索引数吗?这意味着,例如,在第10次尝试时,文本是CA(如上所示),因为索引是字符[2]和字符[0],所以是否有一个数学等式来知道这些索引编号具有尝试次数
如果
try
的值小于4,谢谢您:
characters[try-1]
否则:
characters[(try-4)/3], characters[(try-4)%3]
其中,%
是模运算符,/
是整数除法
因此,对于try==10
,您可以得到:
characters[2], characters[1]
注意:由于try值从1开始,索引从0开始,因此我们需要从一开始就使用-1
注:由于模运算的工作方式,如果
try
的值小于4,则第二个索引也可以写成(try-1)%3
characters[try-1]
否则:
characters[(try-4)/3], characters[(try-4)%3]
其中,%
是模运算符,/
是整数除法
因此,对于try==10
,您可以得到:
characters[2], characters[1]
注意:由于try值从1开始,索引从0开始,因此我们需要从一开始就使用-1
注意:由于模运算的工作方式,第二个索引也可以写成(try-1)%3
我们可以在这个特定的尝试中获得索引的数量吗
对于任何给定数量的字母,您只需以3为基数计算数字。因此,只需从十进制转换为基数3,然后再转换回来
要确定较小字符串长度的可能性有多少:有3^n个不同的可能长度字符串n
,它们使用3个字母
我们可以在这个特定的尝试中获得索引的数量吗
对于任何给定数量的字母,您只需以3为基数计算数字。因此,只需从十进制转换为基数3,然后再转换回来
要确定较小字符串长度的可能性有多少:有3^n个不同长度的可能字符串
n
,它们使用3个字母。我真的不明白这是要解决什么实际问题。它读起来像是家庭作业(我不明白你为什么要在上面加上这两个标签。你能解释一下吗?AA
为什么会导致4次尝试?难道不会导致2次尝试吗?@JoelRondeau-从示例中,我认为“尝试”意味着示例的#(即AA是选项#4)欢迎来到StackExchange。这是家庭作业吗?在不给出答案的情况下,你知道什么是递归关系吗?另一种可能是创建一个字典,它的键是“a”到“CC”,值是“try 1”到“try 12”。我真的不明白这是在试图解决什么实际问题。它看起来像家庭作业(我不明白你为什么要用这两个标记。你能解释一下吗?AA
为什么会导致4次尝试?它不会导致2次尝试吗?@JoelRondeau-从示例中,我认为“尝试”意味着示例的#(即AA是选项#4)欢迎来到StackExchange。这是家庭作业吗?在不给出答案的情况下,你知道什么是递归关系吗?另一种可能是创建一个字典,其中“a”到“CC”是它的键,并尝试1到12作为它的值。谢谢你的回答,但是第二个等式中的逗号代表什么?@MohamedTarek-没有具体说明意思是,只是把这两个值分开感谢你的回答,但是第二个等式中的逗号代表什么?@MohamedTarek-没有具体的意思,只是把这两个值分开values@Mohamed塔瑞克:如果你把字符数组的起始位置改为1而不是0,那就更容易看出了。然后,在10进制中尝试n到3进制的转换将更容易直接生成索引。@BlueRaja使用您的想法,经过一些修改后,我能够获得正确的值,以便正确地转换。非常感谢。@JisBen您的评论也对我有所帮助。谢谢。@Mohamed Tarek:如果您将字符数组的起始位置从0改为1,那么就更容易看到了。然后,在10进制中尝试将n转换为basE3将直接生成索引。@BlueRaja使用您的想法,经过一些修改后,我能够获得正确转换的准确值。非常感谢。@JisBen您的评论也帮助了我。谢谢。