我想从0到99之间选择10个随机整数。我知道我可以使用:
random.randint(a, b)
但是如何告诉randint()我只想要不同的整数。
我是否必须在每次随机生成后检查以查看是否已生成整数并再次调用该方法?这似乎不是一个最佳解决方案。
答案 0 :(得分:10)
from random import sample
sample(range(0, 100), 10)
答案 1 :(得分:8)
这是与语言无关的一般策略。生成一个从0到99的100个条目的数组。选择0到99之间的随机数,并将该位置的条目与位置0处的元素交换。然后从i到99连续选择一个随机数,其中i = 1到9并将该位置的元素与元素i处的元素交换。你的10个随机数位于数组的前10个位置。
答案 2 :(得分:1)
这可能不是一个解决方案,取决于你需要使用它...但是你有没有想过把它分成10个不同的随机数发生器?防爆。 0-9,10-19,20-29等。我猜这并不像你指定不同的范围那样“随机”,并保证每个范围有1个数字。我能想到的唯一其他解决方案是获得一个随机整数列表,迭代并检查是否已生成随机数,如果是,则再次运行random.randint()。
答案 3 :(得分:0)
以下是与语言无关的解决方案:
integer numbers[10];
for(integer i = 0; i < 10; i += 1) {
integer num = randomInteger(min = 0, max = (99 - i));
boolean hasFoundDuplicate = false;
for(integer j = 0; j < i && hasFoundDuplicate == false; j += 1) {
if(numbers[j] == num) {
num = 99 + 1 - i + j;
hasFoundDuplicate = true;
}
}
numbers[i] = num;
}