deleting a fraction of vertices from a point cloud mesh
This script will remove random vertices on the active object in Object Mode.

import bpy, bmesh
from random import randint

bm = bmesh.new()
bm.from_mesh( bpy.context.object.data )

fraction = 0.5
count    = int( len( bm.verts ) * fraction )

removeIndices = []

# Add more unique indices until list is as big as $count
while len( removeIndices ) &lt; count:
    randIdx = randint( 0, len( bm.verts ) - 1 )
    if randIdx not in removeIndices: 
        removeIndices.append( randIdx ) 

bm.verts.ensure_lookup_table()
randVerts = [ bm.verts[ i ] for i in removeIndices ]
for v in randVerts:
    bm.verts.remove( v )

bm.to_mesh( bpy.context.object.data )