博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
生成0到9之间的随机整数
阅读量:3578 次
发布时间:2019-05-20

本文共 6186 字,大约阅读时间需要 20 分钟。

如何在中生成0到9(含)之间的随机整数?

例如, 0123456789


#1楼

import print(random.randint(0,9))

random.randint(a, b)

返回一个随机整数N,使得a <= N <= b。

文档: :


#2楼

from random import randintx = [randint(0, 9) for p in range(0, 10)]

这将生成范围为0到9(包括0和9)的10个伪随机整数。


#3楼

通过random.shuffle试试这个

>>> import random>>> nums = [x for x in range(10)]>>> random.shuffle(nums)>>> nums[6, 3, 5, 4, 0, 1, 2, 9, 8, 7]

#4楼

试试这个:

from random import randrange, uniform# randrange gives you an integral valueirand = randrange(0, 10)# uniform gives you a floating-point valuefrand = uniform(0, 10)

#5楼

尝试:

from random import randrangeprint(randrange(10))

更多信息: :


#6楼

模块是Python 3.6中的新功能。 这比用于加密或安全性使用的模块更好。

要在0-9的包含范围内随机打印一个整数:

from secrets import randbelowprint(randbelow(10))

有关详细信息,请参阅 。


#7楼

如果你想使用numpy,那么使用以下内容:

import numpy as npprint(np.random.randint(0,10))

#8楼

选择数组的大小(在本例中,我选择的大小为20)。 然后,使用以下内容:

import numpy as np   np.random.randint(10, size=(1, 20))

您可以期望看到以下形式的输出( 每次运行时都会返回不同的随机整数;因此您可以预期输出数组中的整数与下面给出的示例不同 )。

array([[1, 6, 1, 2, 8, 6, 3, 3, 2, 5, 6, 5, 0, 9, 5, 6, 4, 5, 9, 3]])

#9楼

random.sample是另一个可以使用的

import randomn = 1 # specify the no. of numbersnum = random.sample(range(10),  n)num[0] # is the required number

#10楼

最好的方法是使用导入随机功能

import randomprint(random.sample(range(10), 10))

或没有任何库导入:

n={} for i in range(10):    n[i]=ifor p in range(10):    print(n.popitem()[1])

这里从字典n删除并返回一个任意值。


#11楼

在连续数字的情况下, 或可能是最佳选择,但如果序列中有几个不同的值(即list ),您还可以使用 :

>>> import random>>> values = list(range(10))>>> random.choice(values)5

choice也适用于非连续样本中的一个项目:

>>> values = [1, 2, 3, 5, 7, 10]>>> random.choice(values)7

如果你需要它“加密强大”,python 3.6和更新版本中也有一个 :

>>> import secrets>>> values = list(range(10))>>> secrets.choice(values)2

#12楼

对于Python 3.6,我有更好的运气

str_Key = ""                                                                                                str_RandomKey = ""                                                                                          for int_I in range(128):                                                                                          str_Key = random.choice('0123456789')      str_RandomKey = str_RandomKey + str_Key

只需添加“ABCD”和“abcd”或“^!〜= - > <”等字符即可更改要拉出的字符池,更改范围以更改生成的字符数。


#13楼

>>> import random>>> random.randrange(10)3>>> random.randrange(10)1

要获取十个样本的列表:

>>> [random.randrange(10) for x in range(10)][9, 0, 4, 0, 5, 7, 4, 3, 6, 8]

#14楼

虽然许多帖子演示了如何获得一个随机整数,但原始问题询问如何生成随机整数s (复数):

如何在Python中生成0到9(含)之间的随机整数?

为清楚起见,这里我们演示如何获得多个随机整数。

特定

>>> import randomlo = 0hi = 10size = 5

多个随机整数

# A>>> [random.randint(lo, hi) for _ in range(size)][9, 7, 0, 7, 3]

# B>>> [random.randrange(lo, hi) for _ in range(size)][8, 3, 6, 8, 7]

# C>>> lst = list(range(lo, hi))>>> random.shuffle(lst)>>> [lst[i] for i in range(size)][6, 8, 2, 5, 1]

# D>>> [random.choice(range(lo, hi)) for _ in range(size)][2, 1, 6, 9, 5]

随机整数的样本

# E>>> random.choices(range(lo, hi), k=size)[3, 2, 0, 8, 2]

# F>>> random.sample(range(lo, hi), k=size)[4, 5, 1, 2, 3]

细节

一些帖子演示了如何本机生成多个随机整数。 1以下是解决隐含问题的一些选项:

  • : 返回一个随机整数N ,使得a <= N <= b
  • Brandint(a, b+1) 别名
  • C : 将一个序列到位
  • D : 从非空序列返回一个随机元素
  • E : 从群体中返回k选择(替换,Python 3.6+)
  • F : 返回来自总体的k唯一选择(无替换): 2

以下是标准库和Numpy中一些随机函数的比较:

| | random                | numpy.random                     ||-|-----------------------|----------------------------------||A| randint(low, high)    | randint(low, high)               ||B| randrange(low, high)  | randint(low, high)               ||C| shuffle(seq)          | shuffle(seq)                     ||D| choice(seq)           | choice(seq)                      ||E| choices(seq, k)       | choice(seq, size)                ||F| sample(seq, k)        | choice(seq, size, replace=False) |

您还可以快速将Numpy中的许多之一转换为随机整数样本。 3

例子

>>> np.random.normal(loc=5, scale=10, size=size).astype(int)array([17, 10,  3,  1, 16])>>> np.random.poisson(lam=1, size=size).astype(int)array([1, 3, 0, 2, 0])>>> np.random.lognormal(mean=0.0, sigma=1.0, size=size).astype(int)array([1, 3, 1, 5, 1])

1即@John Lawrence Aspden,@ ST Mohammed,@ SiddTheKid,@ user14372,@ zangw,et al。2 @prashanth提到这个模块显示一个整数。3由@Siddharth Satpathy演示


#15楼

生成0到9之间的随机整数。

import numpyX = numpy.random.randint(0, 10, size=10)print(X)

输出:

[4 8 0 4 9 6 9 9 0 7]

#16楼

我会尝试以下之一:

1.>

import numpy as npX1 = np.random.randint(low=0, high=10, size=(15,))print (X1)>>> array([3, 0, 9, 0, 5, 7, 6, 9, 6, 7, 9, 6, 6, 9, 8])

2.>

import numpy as npX2 = np.random.uniform(low=0, high=10, size=(15,)).astype(int)print (X2)>>> array([8, 3, 6, 9, 1, 0, 3, 6, 3, 3, 1, 2, 4, 0, 4])

3.>

from random import randrangeX3 = [randrange(10) for i in range(15)]print (X3)>>> [2, 1, 4, 1, 2, 8, 8, 6, 4, 1, 0, 5, 8, 3, 5]

4.>

from random import randintX4 = [randint(0, 9) for i in range(0, 15)]print (X4)>>> [6, 2, 6, 9, 5, 3, 2, 3, 3, 4, 4, 7, 4, 9, 6]

速度:

►np.random.randint最快的 ,其次是np.random.uniformrandom.randrangerandom.randint最慢的

►nap.random.randintnp.random.uniform 都比random.randrange和random.randint 快得多 8到12倍)。

%timeit np.random.randint(low=0, high=10, size=(15,))>> 1.64 µs ± 7.83 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)%timeit np.random.uniform(low=0, high=10, size=(15,)).astype(int)>> 2.15 µs ± 38.6 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)%timeit [randrange(10) for i in range(15)]>> 12.9 µs ± 60.4 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)%timeit [randint(0, 9) for i in range(0, 15)]>> 20 µs ± 386 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

笔记:

1.> 在半开区间[低,高]上生成随机整数。

2.> 在半开区间[低,高]上生成均匀分布的数字。

3.> 从范围(开始,停止,步骤)生成随机数。

4.> 返回随机整数N,使得a <= N <= b。

5.> 将numpy数组转换为int数据类型。

6.>我选择了size =(15,)。 这将给你一个长度= 15的numpy数组。


#17楼

这更像是一种数学方法,但它在100%的时间内起作用:

假设你想使用random.random()函数在ab之间生成一个数字。 要实现此目的,请执行以下操作:

num = (ba)*random.random() + a;

当然,您可以生成更多数字。


#18楼

从模块的文档页面:

警告:不应将此模块的伪随机生成器用于安全目的。 如果需要加密安全的伪随机数生成器,请使用os.urandom()或SystemRandom。

,在Python 2.4中引入,被认为是 。 它仍然可以在Python 3.7.1中找到,这在撰写本文时是最新的。

>>> import string>>> string.digits'0123456789'>>> import random>>> random.SystemRandom().choice(string.digits)'8'>>> random.SystemRandom().choice(string.digits)'1'>>> random.SystemRandom().choice(string.digits)'8'>>> random.SystemRandom().choice(string.digits)'5'

而不是string.digitsrange可以用于其他一些答案,或许可以理解。 根据您的需要混合搭配。

转载地址:http://gtogj.baihongyu.com/

你可能感兴趣的文章
MySQL安装失败,如何完全卸载MySQL
查看>>
显示电脑隐藏的文件夹
查看>>
Linux常用命令
查看>>
Django创建超级用户
查看>>
MongoDB的原码安装后的启动
查看>>
爬取的页面如何判断是否更新
查看>>
面试中的数据库基本知识(锁的分类)
查看>>
面试中的数据库基本知识(事务,事务并发,事务隔离)
查看>>
面试中的数据库基本知识(理论范式)
查看>>
Java之ClassLoader
查看>>
Java之内存模型
查看>>
Java垃圾回收机制(GC算法简述)
查看>>
面试中的数据库基本知识(数据库概述)
查看>>
GC之垃圾收集器
查看>>
进程与线程(操作系统+java)
查看>>
Java线程池
查看>>
HashMap
查看>>
算法笔记1————求一维数组的主元素
查看>>
算法笔记2————单向循环链表实现约瑟夫环
查看>>
算法笔记3-----------Java大数类(这也能叫算法?菜鸡的我只能如此)
查看>>