Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.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-从文件中随机打印行数_Python_Random - Fatal编程技术网

Python-从文件中随机打印行数

Python-从文件中随机打印行数,python,random,Python,Random,如果file.txt包含: appple cheese cake tree pie 使用此选项: nameFile = ("/path/to/file.txt") nameLines = open(nameFile).read().splitlines() randomName = random.choice(nameLines) 这将仅打印file.txt中的一行 如何打印1-2行(随机) 例如: 第一次输出=苹果 第二次输出=奶酪树 第三次输出=蛋糕 第四个输出=蛋糕要产生多个随机数,请

如果file.txt包含:

appple
cheese
cake
tree
pie
使用此选项:

nameFile = ("/path/to/file.txt")
nameLines = open(nameFile).read().splitlines()
randomName = random.choice(nameLines)
这将仅打印file.txt中的一行

如何打印1-2行(随机)

例如:

第一次输出=苹果
第二次输出=奶酪树
第三次输出=蛋糕

第四个输出=蛋糕要产生多个随机数,请使用。您可以随机化样本大小:

randomNames = random.sample(nameLines, random.randint(1, 2))
这将为您提供一个包含1或2个项目的列表,作为从输入中随机选取的样本

演示:

如果需要,使用
str.join()
将单词连接在一起:

>>> ' '.join(random.sample(nameLines, random.randint(1, 2)))
'pie cake'
>>> ' '.join(random.sample(nameLines, random.randint(1, 2)))
'cake'

您有两个基本选项,这取决于(假设您处于双线情况下)是要拾取两条随机线,还是任意一条随机线两次。也就是说,是否允许重复

如果您想允许重复,您需要先选择一个,然后运行您已经有过多次的代码。这是“选择一条随机线,随机次数。”

在另一种情况下,使用并打印所有结果。这是“随机选取离散行数”



根据您的用例使用适当的一个

您希望所有输出之间的概率为偶数吗

假设顺序不重要并且文本文件中有
n
行,这意味着您要从
n+n(n-1)/2=n(n+1)/2中选择不同的结果。即
(n+1)选择2
。如果将空值设置为附加结果,则将获得正确的分布

因此:

这总是选择一个两个的
random.sample
,但其中一个值可能是添加的空字符串。这就好像您只选择了一个值


如果您实际上不希望所有可能结果的分布都是均匀的,那么您首先要选择1或2,然后从相应的名称列表中进行选择。

在我看来,如果您可以使用整数调用任何一行,那么您可以随意创建该整数,以及硬编码。^您将如何做到这一点?是否希望每个可能性都具有相同的可能性?@user261541:
print'。加入(随机名称)
以任何方式删除[''']?谢谢你。
>>> ' '.join(random.sample(nameLines, random.randint(1, 2)))
'pie cake'
>>> ' '.join(random.sample(nameLines, random.randint(1, 2)))
'cake'
# print one or two random lines: possibly the same line twice!
for i in range(random.randint(1, 2)): # change the upper bound as desired
    print(random.choice(nameLines))
# print one or two distinct elements, chosen at random from nameLines
for line in random.sample(nameLines, random.randint(1, 2)):
    print(line)
nameFile = ("/path/to/file.txt")
nameLines = open(nameFile).read().splitlines()
nameLines.append("")
randomName = "".join(random.sample(nameLines, 2))