您需要的是Fisher-Yates shuffle上的变体。我不“做”python(我是一个Java用户),但是,这很简单。。。。在
以有序的方式创建源“set”的数组(从1到101的数组)。在
然后将变量last设置为array.size - 1,并执行以下操作:int[] ret = new int[5] // return array of 5 members.
for (int i = 0; i < 5; i++) { // 5 is the number of values you want.
int rand = random(last + 1) // get a random integer from 0 to last (includes last)
# put the value at array[rand] in your return array var
ret[i] = array[rand]
# move the value at the end to the value we just copied out:
array[rand] = array[last]
# decrease the size of the values we can select from:
last ;
}
这样你就可以从集合中选择5个随机值。没有两面派,都有相同的可能性。在
一个完整的费舍尔·耶茨洗牌可以在适当的地方完成整个阵型。我只是用你需要的算法的一部分。在