use strict;
use warnings;
use feature 'say';
my $len = 100_000;
my $str = join '', map { int( rand 2 ) ? 0 : 1 } 1 .. $len;
say +( $str =~ tr/1/1/ ) / $len;
for ( 1 .. 1_000_000 ) {
my $pos = int rand $len;
my $chr = substr $str, $pos, 1;
substr( $str, $pos, 1, int( rand 2 ) ? 0 : 1 ) if $chr
}
say +( $str =~ tr/1/1/ ) / $len;
####
$ perl 171126.pl
0.4988
0.00312
####
$ perl -v
This is perl 5, version 26, subversion 0 (v5.26.0) built for x86_64-linux-thread-multi
(with 1 registered patch, see perl -V for more detail)