我的代码
import random
MyList = [[1,2,3,4,5,6,7,8],[a,s,d,f,g,h,h],[q,w,e,r,t,y]]
MyListRandom = []
random_number = 5
i=0
while True:
random_list = randint(0,len(MyList))
element_random = random.sample(MyList[random_list], 1)
if element_random[0] not in MyListRandom:
i = i+1
MyListRandom.append(element_random[0])
else:
continue
if(i>=random_number):
break
如果我不想使用此代码进行检查
if element_random[0] not in MyListRandom:
MyListRandom.append(element_random[0])
如果我不想要重复的样本,是否有比这更好的方法?
答案 0 :(得分:1)
如果我理解您的问题理解正确,您只需要原始列表的随机版本,也可以删除原始列表中的任何重复项。如果这是正确的,您可以使用$data
和<textarea id="comment_id"></textarea>
var myCommentID = setInterval(generateCommentID, 1000);
function generateCommentID() {
var comment = "0123456789-abcdefghijklmnopqrstuvwxyz-ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var result = "", rand;
for (var i = 0; i < 6; i++) {
for (var j = 0; j < 4; j++) {
rand = Math.floor(Math.random() * comment.length);
result += comment.charAt(rand);
}
}
document.getElementById("comment_id").innerHTML = result;
}
:
set
如果您不担心原始列表中的重复项,只是尝试解决shuffle
引入的可能重复项,那么这将有效:
MyListRandom = list(set(MyList))
random.shuffle(MyListRandom)
答案 1 :(得分:0)
set random.sample(MyList)
将从列表的项目中为您提供唯一的答案。对于您从中采样的MyList中的重复项,您可以将其设为{{3}}。
此外,您不需要每个样本的循环,您只需给它一个k参数,它将返回k个随机样本。所以整个代码可以写成:
# I have flatten the whole list into one list
element_random = random.sample(set([item for sublist in MyList for item in sublist]), 5)