Python和random.randint()

时间:2016-01-18 22:40:21

标签: python python-3.x

我在学校遇到以下问题:老师要求我们使用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")

这不起作用。

4 个答案:

答案 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。