get a random photo that has not been rated . if possible avoid skipped photos . concode_field_sep List<PhotoId> processedPhotoIds concode_elem_sep List<PhotoId> skippedPhotoIds concode_elem_sep String userName concode_elem_sep String TAGS concode_elem_sep String USER_NAME concode_elem_sep Random randomNumber concode_elem_sep Tags tags concode_elem_sep List<PhotoId> displayablePhotoIds concode_elem_sep Logger log concode_field_sep List<PhotoId> getSkippedPhotoIds concode_elem_sep List<PhotoId> getProcessedPhotoIds concode_elem_sep void addSkippedPhotoId concode_elem_sep void clear concode_elem_sep Tags getTags concode_elem_sep void setTags concode_elem_sep boolean isProcessedPhotoId concode_elem_sep List<String> getFilterConditions concode_elem_sep void generateDisplayablePhotoIds concode_elem_sep void setSkippedPhotoIds concode_elem_sep void collectFilterConditions concode_elem_sep void resetDisplayablePhotoIds concode_elem_sep void setUserName concode_elem_sep List<PhotoId> getDisplayablePhotoIds concode_elem_sep void addProcessedPhoto concode_elem_sep String getUserName concode_elem_sep List<PhotoId> getFilteredPhotoIds concode_elem_sep void setDisplayablePhotoIds
PhotoId function ( ) { if ( ! displayablePhotoIds . isEmpty ( ) ) { int loc0 = displayablePhotoIds . loc0 ( ) ; int loc1 = ( ( randomNumber . nextInt ( ) % loc0 ) + loc0 ) / 2 ; return displayablePhotoIds . get ( loc1 ) ; } else { return PhotoId . NULL_ID ; } }