怎么用python生成随机的且不重复的整数?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么用python生成随机的且不重复的整数?相关的知识,希望对你有一定的参考价值。

我只知道random.randint(0,10)这种,但是会生成重复的数字。
怎么用python在指定范围内生成随机的且不重复的整数?

v假如你排列的是个数组1,2,3,4,5
列数假如也是5 也就是5*5的矩阵
然后让5个数组都随机生成 然后排序
如果两个临近数据相同或相近 这两个数据就是挨着的好像这样:
0:1,2,3,4,5
1:2,3,4,5,1
2:2,3,5,1,4
3:2,3,5,1,4
4:2,3,5,4,1
那么生成完之后就可以经过一次遍历 把邻近两个进行比较
如果相同就重新生成一个 或者先标记 之后再去

需要用到random模块
import random
n = random.randint(1,10)
会生成一个1到10的随机整数。
插入列表即可
[].append(n)
就好了。你可以做个循环。比如for循环,不断插就好了。

参考技术A 一楼思路正确,但是python的random库中已经提供了现成的函数,不需要那么麻烦。
random.sample(list, n)即是从list中随机选取n个不同的元素。
楼主可以试试下面的代码。

import random

for i in range(4):
print random.sample([1, 2, 3, 4, 5, 6, 7, 8], 8)

for i in range(4):
print random.sample(range(10), 10)

for i in range(4):
print random.sample(['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'], 7)
参考技术B import random
print 'N must >K else error'
n=int(raw_input("n="))
k=int(raw_input("k="))
result=[]
x=range(n)
for i in range(k):
t=random.randint(i,n-1)
temp=x[i]
x[i]=x[t]
x[t]=temp
result.append(x[i])
print result
raw_input('Inpuy AnyKey to exit')

你看下吧 N是范围 K是生成的数量本回答被提问者采纳
参考技术C l = []
for i in range(10):
r = random.randint(0,10)
while r in l:
r = random.randint(0,10)
l.append(r)
print r

请问用java从1-33个整数中随机抽取6个数字 且不重复 该怎么写?

public static void main(String[] args)
int[] x = new int[33]; //创建值为1-33的整数表, 初始化
for (int i = 0; i < x.length; i++)
x[i] = i+1;

// -------------------------------------------------
for (int i = 0; i < 6; i++) // 随机取值6次 (你可以把6改成33. 试试看会不会出现重复值)
int j = (int) (Math.random()*(33-i)); // 随机值依次递减1, 以保证不可能重复随机到33这个值
System.out.println("第" + (i+1) + "个随机数为: "+ x[j]);// 输出随机值(真正的随机值为整数表x中的数)
x[j] = x[33-i-1]; // 整数表x中已被随机到的值替换为表中最后一个数, 避免以后可能随机到

// -------------------------------------------------
// 整个思路你可以想象成是栈堆的出栈, 随机到的值出栈, 就不会随机到重复值


有问题欢迎继续提问, 希望能帮你解决问题!
参考技术A int[] n= 1,2,3.......32;//创建值为1-33的整数表, 初始化
int[] m =-1,-1,-1,-1,-1,-1;
int k=0;
main_loop:
while(k <6)
int x = (int)(Math.random()*100)%6;
for(int j=0;j <k;j++)
if(m[j]==x)continue main_loop;

m[k]=x;
k++;
System.out.println(n[x]);

以上是关于怎么用python生成随机的且不重复的整数?的主要内容,如果未能解决你的问题,请参考以下文章

用js实现随机选取10–100之间的10个且不重复的数字,存入一个数组。

请问用java从1-33个整数中随机抽取6个数字 且不重复 1-16随机抽取一个数,给小球?

在c#中随机抽取数据库中数据且不重复怎么实现SQL语句

怎么才能用js实现随机选取10–100之间的10个且不重复的数字存入一个数组?

生成不重复的随机数

用Python或者Java如何生成多位数字不重复的数