Python中,我想得到1~255随机整数,用rand.randint(1,255),但不想让里面170这个数出现,怎么写呢?
答案:6 悬赏:70 手机版
解决时间 2021-02-19 05:29
- 提问者网友:人傍凄凉立暮秋
- 2021-02-18 20:53
Python中,我想得到1~255随机整数,用rand.randint(1,255),但不想让里面170这个数出现,怎么写呢?
最佳答案
- 五星知识达人网友:执傲
- 2021-02-18 21:36
相当于是取1~254的随机数,然后如果得到的数大于等于170的话,就往后挪1,就达到你要的随机效果了。
a = random.randint(1, 254)
if a >= 170:
a += 1
a = random.randint(1, 254)
if a >= 170:
a += 1
全部回答
- 1楼网友:平生事
- 2021-02-19 00:52
# Python 3 版本适用此代码,这段代码的思路是先生成一个符合要求的所有数字的列表。
# 然后从这个列表里除去不需要的170这个数字,再用随机函数在这个不包含170的数字集合中
# 随机出一个数字。
import random # 导入random这个库
a=list(range(1,256)) # 生成包含1到255这些数字的列表,注意range的参数是包头不包尾。
a.remove(170) # 从列表中去除170这个数字
print(random.sample(a,1)[0]) # 打印这个数字,sample方法两个参数的意义是(列表,取几个值)
# 然后从这个列表里除去不需要的170这个数字,再用随机函数在这个不包含170的数字集合中
# 随机出一个数字。
import random # 导入random这个库
a=list(range(1,256)) # 生成包含1到255这些数字的列表,注意range的参数是包头不包尾。
a.remove(170) # 从列表中去除170这个数字
print(random.sample(a,1)[0]) # 打印这个数字,sample方法两个参数的意义是(列表,取几个值)
- 2楼网友:封刀令
- 2021-02-19 00:33
import random
import pylab
def generate(n):
list = []
for i in range(n):
a = random.randint(1,169)
b = random.randint(171,255)
if random.random() < 169.0 / 255.0:
list.append(a)
else:
list.append(b)
return list
pylab.hist(generate(10000),bins=254)
pylab.show()
看看,最后绘图,均匀分布
import pylab
def generate(n):
list = []
for i in range(n):
a = random.randint(1,169)
b = random.randint(171,255)
if random.random() < 169.0 / 255.0:
list.append(a)
else:
list.append(b)
return list
pylab.hist(generate(10000),bins=254)
pylab.show()
看看,最后绘图,均匀分布
- 3楼网友:深街酒徒
- 2021-02-19 00:28
观看了楼主采纳的这个答案觉得不妥,虽然下面的代码也可以达到随机的效果。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楼网友:我住北渡口
- 2021-02-19 00:04
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
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
- 5楼网友:山有枢
- 2021-02-18 22:40
from random import *
a = range(1,256)
a.remove(170)
print sample(a, 1)[0]
a = range(1,256)
a.remove(170)
print sample(a, 1)[0]
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯