C#的数学概率-如何在某次尝试中获得3个不同字符的枚举值

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]

嗨,我昨天问了这个问题,没有被人理解,所以这次我会尽量说得更具体一些。情况是这样的

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] 
------------
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您的评论也帮助了我。谢谢。