gpt4 book ai didi

java - BitSet Flip() 会影响 BitSet 的长度吗?

转载 作者:行者123 更新时间:2023-12-02 03:27:54 27 4
gpt4 key购买 nike

在下面的函数中,我想根据突变概率来突变 BitSet。

public static Cell mutate(Cell original_){

Double mProb = 0.2;

BitSet original = new BitSet(original_.getChrom().size());

original = (BitSet) original_.getChrom().clone();

Random rand = new Random();
System.out.print(" " + original.length() + " "); //to check the length of original before applying flip()

for(int m = 0; m < original.length(); m++)
{

if(rand.nextDouble() <= mProb){
original.flip(m);
}

}

System.out.print(" " + original.length() + " "); //to check the length of original after applying flip()

Cell mutated = new Cell(original);
//System.out.print("{" + mutated.getFitness() + "} ");

return mutated;
}

我注意到的问题是,有时 BitSet 的长度在翻转一些位后会减少!!

以下一些结果来说明问题:

original before flip || length before flip || original after flip || length after flip
110111 || 6 || 110111 || 6
101111 || 6 || 111 || 3
110111 || 6 || 10111 || 5
110111 || 6 || 111111 || 6
111010 || 6 || 11010 || 5

可以看到,翻转后第一个和第四个并没有减少。而其他的都减少了。我试图理解是什么导致了这个问题,但我做不到。我所需要的只是翻转后位集的长度应与翻转前原始位集的长度相同。

最佳答案

Does BitSet flip() affect the length of BitSet?

Javadoc对于 BitSet::length 说:

public int length()
Returns the "logical size" of this BitSet: the index of the highest set bit in the BitSet plus one. Returns zero if the BitSet contains no set bits.

BitSet b = new BitSet();
System.out.println(b.length()); // 0
b.flip(1);
System.out.println(b.length()); // 2
b.flip(1);
System.out.println(b.length()); // 0

关于java - BitSet Flip() 会影响 BitSet 的长度吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38545991/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com