Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python和random.randint()_Python_Python 3.x - Fatal编程技术网

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")