Most of your $1024$ strings will be expected to appear about $\frac{10^6}{2^{10}} \approx 977$ times (with a standard deviation about $31$) but for some the expected number is $10\%$ lower about $879$ and others $10\%$ higher about $1074$.
So if you did something like a chi-squared analysis then it would not surprise me if you were quite likely in this example to reject a hypothesis that all $1024$ strings/values were equally likely to appear.
If you then looked at the least and most common strings/values, you might spot that a disproportionate number of both were of the binary form $11xxxxx000$, i.e. in decimal at least $768$ and a multiple of $8$. It might take longer to estimate the further detail.
Here is an example in R:
set.seed(2023) sims <- sample(0:(2^10-1), 10^6, replace=TRUE) unirv <- runif(10^6) simsadjusted <- sims + ifelse(unirv > 0.1, 0, ifelse(sims %/% (2^7) == 7 & sims %% (2^4) == 0, 8, 0) + ifelse(sims %/% (2^7) == 6 & sims %% (2^4) == 8, -8, 0)) counts <- table(sims) chisq.test(counts) # before adjustment # Chi-squared test for given probabilities # # data: counts # X-squared = 1028.4, df = 1023, p-value = 0.4465 countsadjusted <- table(simsadjusted) chisq.test(countsadjusted) # after adjustment # Chi-squared test for given probabilities # # data: countsadjusted # X-squared = 1351.1, df = 1023, p-value = 1.898e-11 sortcountsadjusted <- sort(countsadjusted) names(head(sortcountsadjusted, 10)) # ten least common # "872" "840" "792" "896" "776" "1008" "856" "976" "912" "808" names(tail(sortcountsadjusted, 10)) # ten most common # "296" "832" "334" "984" "1016" "936" "920" "968" "904" "864"