private final boolean weakPlaySkipMove(Position pos,Move m,int ply){
  long rndL=pos.zobristHash() ^ Position.psHashKeys[0][m.from] ^ Position.psHashKeys[0][m.to]^ randomSeed;
  double rnd=((rndL & 0x7fffffffffffffffL) % 1000000000) / 1e9;
  double s=strength * 1e-3;
  double offs=(17 - 50 * s) / 3;
  double effPly=ply * Evaluate.interpolate(pos.wMtrl + pos.bMtrl,0,30,Evaluate.qV * 4,100) * 1e-2;
  double t=effPly + offs;
  double p=1 / (1 + Math.exp(t));
  boolean easyMove=((pos.getPiece(m.to) != Piece.EMPTY) || (ply < 2) || (searchTreeInfo[ply - 2].currentMove.to == m.from));
  if (easyMove)   p=1 - (1 - p) * (1 - p);
  if (rnd > p)   return true;
  return false;
}

private final boolean weakPlaySkipMove ( Position pos , Move m , int ply ) { long rndL = pos . zobristHash ( ) ^ Position . psHashKeys [ 0 ] [ m . from ] ^ Position . psHashKeys [ 0 ] [ m . to ] ^ randomSeed ; double rnd = ( ( rndL & 0x7fffffffffffffffL ) % 1000000000 ) / 1e9 ; double s = strength * 1e-3 ; double offs = ( 17 - 50 * s ) / 3 ; double effPly = ply * Evaluate . interpolate ( pos . wMtrl + pos . bMtrl , 0 , 30 , Evaluate . qV * 4 , 100 ) * 1e-2 ; double t = effPly + offs ; double p = 1 / ( 1 + Math . exp ( t ) ) ; boolean easyMove = ( ( pos . getPiece ( m . to ) != Piece . EMPTY ) || ( ply < 2 ) || ( searchTreeInfo [ ply - 2 ] . currentMove . to == m . from ) ) ; if ( easyMove ) p = 1 - ( 1 - p ) * ( 1 - p ) ; if ( rnd > p ) return true ; return false ; }
return true if move should be skipped in order to make engine play weaker .
