使用 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],那么是否有数学方程知道这些索引数字具有尝试次数?
谢谢
我们能否在此特定尝试中获得索引数
对于任何给定数量的字母,您只是以 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