As an inlustration for what I want:

For a small table, I can do it in the following manner:

Suppose I want 30 points,

{i,j}

i = RandomInteger[{1, N}, 30];

j = RandomInteger[{1, M}, 30];

points = Transpose[{i, j}];

Let M be my table, I can plot what I want brutally:

Show[ListPlot[{#}, PlotMarkers -> M[[#[[1]], #[[2]]]], PlotRange -> All] & /@ points]

But, if the required sample size increases (the limit being, say, the bare readablity of the plotted numbers), I am affraid that this isn't the most rational way.