I am trying to create an algorithm to generate test cases. Each test case is an array of $n$ natural integers which are randomly generated using a pseudo-random function. The bound for $n$ is $0 < n \le 256$.
Each array is generated using a "repetitiveness/noise factor", $r$. If $r = n$, the elements of the array will all be individually computed with the pseudo-random function (therefore, the function is called $n$ times). On the lower bound, $r = 1$, all the elements of the array are generated at once (function is called once). As an other example, if $r = n-1$, the first two elements will be calculated at once, while the remaining elements will be computed individually.
Spreading the repetition across the elements should be preferred over calculating a repetition once: $[a, a, b, b, c]$ is preferred over $[a, a, a, b, c]$, even if both cases only call the pseudo-random function 3 times. As such, if $n$ is an even number, and $r = \frac n2$, then the array should consist of $r$ groups of 2 elements computed together.
If my explanation is not clear, perhaps some example data could help:
Given $n = 5$, $r = 5$, resulting array is $[a, b, c, d, e]$
Given $n = 5$, $r = 4$, resulting array is $[a, a, b, c, d]$
Given $n = 5$, $r = 3$, resulting array is $[a, a, b, b, c]$
Given $n = 5$, $r = 2$, resulting array is $[a, a, a, b, b]$
Given $n = 5$, $r = 1$, resulting array is $[a, a, a, a, a]$