我在学校遇到以下问题:老师要求我们使用randint
功能将概率分为2/3和1/3。
我真的不明白这个randint
概率函数是如何起作用的。
import random
rand = (random.randint(1,100))
if rand >= 67 :
print ("obj A 1/3")
else:
print ("obj B 2/3")
这不起作用。
答案 0 :(得分:2)
您必须学习的一项关键技能是使用文档。快速搜索带我进入random.randint()
上的Python手册页:
返回一个随机整数 N ,使
a <= N <= b
。
您创建的变量rand
等于随机数>= 1
和<= 100
。下一行是一个条件,检查你的号码是>= 67
......这只会是真实的~1 / 3。
旁注:在1-100之间使用随机数没有任何好处。如果你想要找到你想要的东西(即1/3),你的代码会更直接(因此也就是Pythonic)。
import random
rand = random.randint(1, 3)
if rand is 1:
print '1/3'
else:
print '2/3'
答案 1 :(得分:0)
我想我知道你要做什么,但你需要从random阅读。看看这个question/answer,我想它会更好地解释一下。您当前的代码会出现语法错误,我认为您要做的是:
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。 PS。更准确的解决方案是从1到3生成随机int,而不是从1-100的角度考虑问题。然后你的概率变得更准确,因为当时的1/3 = 33.3333 ......很难用1-100表示它。
答案 2 :(得分:0)
random.randint(1,100)
这会返回一个从1到100的数字。因此,1/3约为33而2/3约为66.因此,如果数字等于或大于67,则第一个if
语句会看到,打印"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")
。而且,数学是错误的。该程序看起来应该更像这样:
rand
上述数学是最准确的,因为你有1/3的机会得到一个数字,它对应于分数中的分子,x超过3,其中 webpack-dev-server --hot --devtool eval-source-map --output-pathinfo --watch --colors --progress --inline --content-base public --port 8050 --host 0.0.0.0
等于x。 / p>
答案 3 :(得分:0)
为什么这么复杂?简化分母的级别:3。以相同的概率生成三个整数之一。你会得到1分,2分和3分;每个出现1/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。