String 将二进制字符串随机拆分为给定长度的块
假设给您一个长度为n的二进制字符串。 您必须将它分成块,例如5、10和17位,这样每个分区发生的可能性相等 我的一个想法是生成一个5x+10y+17z=n的随机解,然后洗牌集合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)
{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)