Naturally, you can apply the same with the function in_array again. I only check for the values. Since you've got a unique value, you should check for both. Assuming they don't match up.
The best thing to do is to make it database driven, because then you can later add the URL which makes checking easier.
Also, the mt_rand can be greatly increased in random numbers. Insert them all into an array (about 20 times, of course in the for loop) and then choose with the mt_rand again a number (key) out of that array, which resembles another number. For example, you'll get mt_rand 20 times, on key 19 you're going to get the number 8. So, if the next mt_rand (that finalizes the random) poops out the key 19, you'll get 8 as the random number. This would mean that you can make about 10000 keys in the array, all matching from 1 to the array size of your proxy array. In this case, 10000 different numbers from 0 to 10.
this code allows me to show 5 random links, however when it loads, sometimes there is like:
true enough, its random but i dont want dupliates
Using the code that you provided, there shouldn't be any duplicates (unless you have duplicates in the original array). Running this code a million times, there's not even one duplicated value (from a quick test) which confirms my suspicion.
If you're wanting another approach, copy the original array into a new temporary variable. Then, shuffle it and array_slice however many you want.