Python和random.randint()
我在学校遇到了以下问题:老师要求我们使用Python和random.randint(),python,python-3.x,Python,Python 3.x,我在学校遇到了以下问题:老师要求我们使用randint函数,以2/3和1/3的概率进行两边的划分 我真的不明白这个概率函数是如何工作的 import random rand = (random.randint(1,100)) if rand >= 67 : print ("obj A 1/3") else: print ("obj B 2/3") 这是行不通的。您必须学习的一项关键技能是使
randint
函数,以2/3和1/3的概率进行两边的划分
我真的不明白这个概率函数是如何工作的
import random
rand = (random.randint(1,100))
if rand >= 67 :
print ("obj A 1/3")
else:
print ("obj B 2/3")
这是行不通的。您必须学习的一项关键技能是使用文档。通过快速搜索,我进入了Python手册页面:
返回一个随机整数N,这样
a我想我知道你想做什么,但是你需要从这里开始阅读。看看这个,我认为它能更好地解释事情。您当前的代码将出现语法错误,我认为您要做的是:
import random
rand = (random.randint(1,100))
if rand >= 67:
print("1/3rd") # Do the 1/3rd things...
else:
print("2/3rd") # Do the 2/rd things...
不过,我恳请你去读一下python。一个更准确的解决方案是生成一个从1到3的随机整数,而不是按照1-100来考虑问题。那么你的概率会变得更准确,因为1/3=33.3333。。。在当时,很难用1-100来表示它
random.randint(1,100)
这将返回一个从1到100的数字。因此,1/3约为33,2/3约为66。因此,第一个if
语句看到,如果数字等于或大于67,则打印“obj A 1/3”
,这是以下部分:
if rand >= 67:
print ("obj A 1/3")
其他内容,然后打印“obj A 2/3”,这是最后一部分:
else:
print ("obj B 2/3")
当然,您需要像那样使用print()
,而不是像这样使用print()
,除非您想要语法错误。而且,数学是错误的。程序应该更像这样:
import random
rand = (random.randint(1, 3))
if rand == 1:
print("obj C 3/3")
elif rand == 2:
print("obj A 2/3")
elif rand == 1:
print("obj B 1/3")
上面的数学是最精确的,因为你有1/3的机会得到一个数字,它对应于分数中的分子,x除以3,其中,rand
等于x。为什么这么复杂?简化到你分母的水平:3。生成三个整数中的一个,概率相等。您将得到1、2和3;每一个都会出现三分之一的时间
rand = random.randint(1,3)
if rand == 1:
print ("obj A 1/3")
else:
print ("obj B 2/3")
这对你来说够简单吗?在原始代码中,您生成了100个不同的整数。你在其中的34个案例中做了“A”部分。这是34%,比要求的1/3多一点。“真的不明白这是怎么回事……不起作用”-什么?!请阅读,并试着找到能帮助你更好地翻译成英语的人。记住缩进在Pythong中是必不可少的,所以要小心。你不明白什么?你知道random.randint()正在做什么吗?你明白变量赋值的作用吗?你懂条件句吗?是的,我都懂。我不明白的是,如何使用randint来区分1/3和2/3。似乎这更像是一个数学问题而不是编程问题-2/3(大致)是67/100sry,是的,我忘记了导入随机部分。还是。。。。我的老师说代码是错误的,它没有给出1/3或2/3的答案。从逻辑上讲,我的代码就是这样做的。是的,因为你的代码生成的是从1到100的随机整数,并且拆分为>=67。您需要简化问题并使用random.randint(1,3)
,然后使用if-rand
rand = random.randint(1,3)
if rand == 1:
print ("obj A 1/3")
else:
print ("obj B 2/3")