Python中,我想得到1~255随机整数,用rand.randint(1,255),但不想让里面170这个数出现,怎么写呢?

2024-12-30 20:05:59
推荐回答(5个)
回答1:

1、可以使用while函数,对随机进行循环

2、直接在随机数中去掉170这个值

扩展资料:

除了randint,random模块中比较常用的方法还有:

1、random.random()

生成一个0到1之间的随机浮点数,包括0但不包括1,也就是[0.0, 1.0)。

2、random.uniform(a, b)

生成a、b之间的随机浮点数。不过与randint不同的是,a、b无需是整数,也不用考虑大小。

random.uniform(2.2, 6)

random.uniform(6,2.2)

这两种参数都是可行的。

3、random.choice(seq)

从序列中随机选取一个元素。seq需要是一个序列,比如list、元组、字符串。

random.choice([1, 4, 7, 2, 5, 8]) #list

random.choice('hello') #字符串

random.choice((1, 2, 3)) #元组

都是可行的用法。

回答2:

先随机得到1-254之间的一个数,如果这个数等于170,再次随机,这样才能保证得到的数是完全随机出来的,而不能给随机出来的数加上1。

可以是下面这样的。

import random

a=random.randint(1,254)

while(a==170):

a=random.randint(1,254)

print(a)

扩展资料:

在统计学的不同技术中需要使用随机数,比如在从统计总体中抽取有代表性的样本的时候,或者在将实验动物分配到不同的试验组的过程中,或者在进行蒙特卡罗模拟法计算的时候等等。

产生随机数有多种不同的方法。这些方法被称为随机数发生器。随机数最重要的特性是:它所产生的后面的那个数与前面的那个数毫无关系。

真正的随机数是使用物理现象产生的:比如掷钱币、骰子、转轮、使用电子元件的噪音、核裂变等等。这样的随机数发生器叫做物理性随机数发生器,它们的缺点是技术要求比较高。

在实际应用中往往使用伪随机数就足够了。这些数列是“似乎”随机的数,实际上它们是通过一个固定的、可以重复的计算方法产生的。计算机或计算器产生的随机数有很长的周期性。它们不真正地随机,因为它们实际上是可以计算出来的,但是它们具有类似于随机数的统计特征。这样的发生器叫做伪随机数发生器。

在真正关键性的应用中,比如在密码学中,人们一般使用真正的随机数。

C语言、C++、C#、Java、Matlab等程序语言和软件中都有对应的随机数生成函数,如rand等。

参考资料:随机数_百度百科

回答3:

观看了楼主采纳的这个答案觉得不妥,虽然下面的代码也可以达到随机的效果。

import random
a = random.randint(1, 254)
if a >= 170:
a += 1

但却不是真正的随机,真正的随机应该是先随机得到1-254之间的一个数,如果这个数等于170,再次随机,这样才能保证得到的数是完全随机出来的,而不能给随机出来的数加上1。

可以是下面这样的。

import random
a=random.randint(1,254)
while(a==170):
a=random.randint(1,254)
print(a)

当然上面的随机是把170这个数也算入到里面去了,那么怎么去掉170这个数,再在1-169,169-254这两组数字之间随机呢?下面有一行代码可以得到随机整数

import random
random.choice([x for x in range(1,254) if x!=170 ])
楼主可以用type(x)来查看得到的数的类型,是个整数哦。

不知道是否满足楼主的需求?

回答4:

相当于是取1~254的随机数,然后如果得到的数大于等于170的话,就往后挪1,就达到你要的随机效果了。

a = random.randint(1, 254)
if a >= 170:
a += 1

回答5:

import random

def numgen(start, ended, times=100, exceptset=set()):
    while times:
        x = random.randint(start, ended)
        if x in exceptset:
            continue
        yield x
        times -= 1
        
for n in numgen(1, 255, 10, set([170,]):
   print n