Your approach is quite good. But, doesn't completely simulate "everything" that a human player would be like. So, if you want to simulate a human player, you should try to think about the following:
"Remembering" a cards position isn't like true or false. Remembering it "correctly" is of course be true/false. But, forgetting about a card is more like losing accuracy about its definite location. So you'll be able to remind the "region" where it has been, but this region grows with time.
This "reminding model" also simulates the following effects: If a card is at the border or in one of the corners, you'll remind it better. The region grows (imaging a circle around the cards center increases) but there are no cards at the outside, so the probability is higher to turn the correct card. This also applies, if a card is isolated (many other cards next to it have already been removed).
Your approach still also lacks the fact, that your rate of forgetting becomes less, if the number of cards on the table reduce.
I would apply the following algorithm:
Cards in memory are stored as exact position (when last turned) and a variance. Assume a Gaussian distribution of the remembered card location. So when trying to turn the card, calculate the chance for each card to be turned by the Gaussian distribution. Then calculate the sum off all probabilities and divide the probabilities by that sum (so the sum of them is 1 == 100%).
Then choose a card by generating a float between 0 and 1.0 and iterate through all cards. For each card, reduce the random value by the probability of the current card and check if the value is below 0. If the value becomes lower than zero, take that card.
The probabilities above can also be used for "planing", that means: The AI can "guess" in advance how well it remembers the location of a card (probability to take the correct one). If it needs to turn two matching cards, the probabilities need to be multiplied. This way, the AI can choose the cards with highest probability to be reminded correctly.
The formula for the Gaussian distribution can be found at:
As the distribution is 2-dimensional use: f(delta_x)*f(delta_y) for the probability. You can assume the average to be zero, if you use the relative position to the real position. This way the only parameter to the function is the offset and the variance.