随机将二进制字符串拆分为给定长度的块

时间:2014-05-15 06:48:10

标签: string binary partition

假设您有一个长度 n 的二进制字符串。 而且你必须将它分成例如5,10和17位的块,这样每个分区都可能发生。

我的一个想法是生成一个5x + 10y + 17z = n的随机解,然后将该组随机洗牌 {5,..,5,10,..,10,17,..,17}其中5& s,10&s;和17&s的数量对应于解(x,y, z)我获得了。
获得线性丢番图方程的随机解决方案似乎很困难。
(即我不知道怎么做)

我的另一种方法是使用某种递归函数:

 recursive_partition(int n, partitions)
 {
    if(n==0)return;
    temp=random{5,10,17}
    partitions.add(temp)
    recursive_partition(n-temp, partitions)
 }

这个问题是当0 <0时功能变为死胡同。 n&lt; 5
例如,如果输入是n = 57并且该功能需要两个17分。
因为我需要一个统一的随机分区,我唯一能做的就是重新开始。
是否有一种计算上可行的方法来解决这个问题?顺便提一下,5,10和17只是一个例子。我需要一个通用的算法。

0 个答案:

没有答案