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

String 将二进制字符串随机拆分为给定长度的块,string,binary,partition,String,Binary,Partition,假设给您一个长度为n的二进制字符串。 您必须将它分成块,例如5、10和17位,这样每个分区发生的可能性相等 我的一个想法是生成一个5x+10y+17z=n的随机解,然后洗牌集合 {5,…,5,10,…,10,17,…,17}其中5,10和17的数目对应于我得到的解(x,y,z)

假设给您一个长度为n的二进制字符串。 您必须将它分成块,例如5、10和17位,这样每个分区发生的可能性相等

我的一个想法是生成一个5x+10y+17z=n的随机解,然后洗牌集合
{5,…,5,10,…,10,17,…,17}其中5,10和17的数目对应于我得到的解(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)
 }
这样做的问题是,当0n是18,并且没有精确的分区是可能的,你应该怎么做?另外,我认为你的意思是“两个17”->“三个17”(3x17=51,剩下6)