How to randomly (with a checkered pattern) select a number of faces in a mesh?
Go to the icosphere's Edit mode with Face selection, execute Select > Random, set Percent to 50%:



It won't select exactly 50% of the faces, but close enough that only a few additional manual (de)selection is needed. Then execute Delete X > Only Faces.

You can see exactly how many faces were selected by looking at the Info view header 

Non-Adjacent Selection

I use this occasion to learn BMesh, and come up with this script:

import bpy
import bmesh

obj = bpy.context.object
prev_mode = obj.mode
bpy.ops.object.mode_set(mode='OBJECT')
bm = bmesh.new()
bm.from_mesh(obj.data)

bm.faces[0].select = True
selected_edges = list(bm.faces[0].edges)
for face in bm.faces:
    sl = [(edge in selected_edges) for edge in face.edges]
    if any(sl):
        continue
    selected_edges.extend(face.edges)

    face.select = True
print('*' * 10)

bm.to_mesh(obj.data)
bpy.ops.object.mode_set(mode=prev_mode)


Unlike Checker Deselect mentioned by @CoDEmanX, it only selects less than half of the faces in an icosphere. I think those strips can't be selected without breaking the non-adjacency requirement: