擅长:python、mysql、java
<p>如果您担心重复和连续的数字,您可以取这些数字的<code>np.diff</code>,然后使用<a href="https://en.wikipedia.org/wiki/Kolmogorov%E2%80%93Smirnov_test" rel="nofollow noreferrer">Kolmogorov Smirnov test</a>与三角形分布进行比较。随机数的连续数字之间的差值应遵循<code>-10</code>和<code>10</code>之间的三角形分布,最大值在<code>0</code></p>
<pre><code>import scipy.stats as stat
t = stat.triang(.5, loc = -10, scale = 20)
</code></pre>
<p>将条形码转换为数组:</p>
<pre><code>a = np.array(list(map(list, map(str, a))), dtype = int) # however you get `a` out of your dataframe
</code></pre>
<p>然后用它做一个面具</p>
<pre><code>np.array[stat.kstest(i, t.cdf).pvalue > .5 for i in np.diff(a, axis = 1)]
</code></pre>
<p>测试:</p>
<pre><code>np.array([stat.kstest(j, t.cdf).pvalue > .5 for j in np.diff(np.random.randint(0, 10, (1000, 13)), axis = 1)]).sum()
Out: 720
</code></pre>
<p>您将有大约30%的假阴性率,但是p值阈值<code>.5</code>应该可以保证您保留的值没有太多连续或重复的数字。如果你真的想确定你已经消除了任何可疑的东西,你可能还想测试实际数字对<code>stat.uniform(scale = 10)</code>(消除<code>1213141516171</code>和类似的)。你知道吗</p>