If you use a SQL Server Management Tool and run the query
select CAST(RAND(CHECKSUM(NEWID())) * 10 AS INT)+1
about 20 times you could simply see the result is a random value between 1 and 10. So it is very possible you get duplicates.
Enlarge your range or only use the NewID().
If you would do:
DECLARE @generatedValue INT
SET @generatedValue = CAST(RAND(CHECKSUM(NEWID())) * 10 AS INT)+1
You have a variable which you can test for.
But why you have to remove duplicate number if you use an UPDATE statement. Is there somewhere an INSERT statement available in your code that causes the problem?