Python从fi打印随机行数

2024-04-16 12:57:44 发布

您现在位置:Python中文网/ 问答频道 /正文

如果文件.txt包含:

appple
cheese
cake
tree
pie

使用这个:

^{pr2}$

这将只打印1行文件.txt在

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

示例:

第一次输出=苹果
第二个输出=cheesetree
第三输出=馅饼
第四产出=蛋糕


Tags: 文件苹果txttree示例cake蛋糕pie
3条回答

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

如果你想允许重复,你需要先选择一个^{},然后运行你已经有很多次的代码。这是“随机抽取一行,随机抽取若干次。”

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

在另一种情况下,使用^{},然后打印所有结果。这是“随机选取离散线数”。在

^{pr2}$

为你的用例使用合适的一个!在

你想要所有输出的概率都是偶数吗?在

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

因此:

nameFile = ("/path/to/file.txt")
nameLines = open(nameFile).read().splitlines()
nameLines.append("")
randomName = "".join(random.sample(nameLines, 2))

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

如果你不希望所有可能的结果都是均匀分布的,那么你应该首先选择你想要的是1还是2,然后相应地从列表中选择。在

要产生多个随机数,请使用^{}。可以随机化样本大小:

randomNames = random.sample(nameLines, random.randint(1, 2))

这将为您提供一个包含1个或2个项目的列表,从输入中随机抽取一个样本。在

演示:

^{pr2}$

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

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

相关问题 更多 >