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

本文关键字:获取 枚举 字符 概率 使用 | 更新日期: 2023-09-27 18:36:27

嗨,我昨天问过这个问题,但因不被理解而关闭,所以这次我会尽量更具体。所以情况是这样的。

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],那么是否有数学方程知道这些索引数字具有尝试次数?

谢谢

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

我们能否在此特定尝试中获得索引数

对于任何给定数量的字母,您只是以 3 为基数计算数字。 因此,只需从十进制转换为以 3 为基数,然后再转换回来。

要确定较小的字符串长度有多少种可能性:有 3^n 个不同的可能字符串,长度n使用 3 个字母。

如果 try 的值小于 4:

characters[try-1]

否则:

characters[(try-4)/3], characters[(try-4)%3]

其中%是模运算符,/是整数除法

因此,对于try == 10,您可以得到:

characters[2], characters[1]

注意:由于您的 try 值从 1 开始,索引从 0 开始,因此我们从一开始就需要一个 -1

注意:由于模运算的工作方式,第二个索引也可以写成(try-1)%3