擅长:python、mysql、java
<p>我认为最简单的方法是制作索引列表并将其洗牌</p>
<pre><code>import random
indexes = list(range(len(data))) # create list of indexes
random.shuffle(indexes) # shuffle it
for i in range(len(data)):
if i < 4: # first 4 rows
data[indexes[i]] = random.randint(4, 10)
elif i < 8: # another 4 rows
data[indexes[i]] = random.randint(-4, -10)
else: # rest
data[indexes[i]] = random.randint(15, 100)
</code></pre>
<h2>编辑:</h2>
<pre><code>import random
indexes = list(range(len(data))) # create list of indexes
random.shuffle(indexes) # shuffle it
for i in range(len(data)):
if i < (len(data)//3): # first 1/3 rows
data[indexes[i]] = random.randint(4, 10)
elif i < (len(data)//3)*2: # another 1/3 rows
data[indexes[i]] = random.randint(-10, -4)
else: # rest
data[indexes[i]] = random.randint(15, 100)
</code></pre>
<p>我已经测试过了。它所做的是用第一个范围填充随机1/3的元素,用第二个范围填充左1/2的数字,其余用第三个范围填充。索引是随机的,因为它们是从“索引”列表中选择的,并且是无序的。时间复杂度为O(n)(线性),其中n是数据长度</p>