在文件中写入随机数

Writing random numbers in file

我的任务是生成不同的文件,每个文件都有特定的大小。此大小包括写入文件的随机数。例如,如果大小为 100,则意味着程序需要写入 100 个随机数并生成一个文件并将它们添加到该文件中。我的问题是,通过 运行 这段代码我会得到例如 100 个数字,但它们都是相同的,没有一个是不同的。你能帮我解决一下吗?

import random
import time

def fillFile(fileSize, fileName):
    for i in range(fileSize):
        values = random.randint(0, fileSize + 1000)
    file = open(fileName + ".txt", "w")
    for i in range(fileSize):
        file.write(f"{i} {values}\n")

fileSizes = [1000, 5000, 10000, 25000, 50000, 100000, 200000]

def readFile(fileName):
    files= open(str(fileName) + ".txt", "r")
    values = []
    for line in files:
        values.append(line.split())
    return values

基本上你应该改变声明变量“values”的位置

def fillFile(fileSize, fileName):
    for i in range(fileSize):
        file = open(fileName + ".txt", "w")
        for i in range(fileSize):
            values = random.randint(0, fileSize + 1000)
            file.write(f"{i} {values}\n")

这里的想法是,在您的原始代码中,您生成一个随机数“值”fileSize 次,然后进入一个循环,在该循环中将最后生成的“值”写入您的文件。 至于您的目的,如果您希望随机生成文件中的所有数字,那么您需要在循环内声明它们,或者 pre-create 您的数字数组并找到一种编写方法在你的文件中你想要的格式。

注:

提醒一下,函数 random.randint(a, b) returns 一个随机整数 N,满足 a <= N <= b。因此,在您的原始代码中,values = random.randint(0, fileSize + 1000) 同时在 a=0 和 b=fileSize+1000 之间生成一个随机整数。因此,您可能想去掉我认为的“+1000”,但这又取决于我不清楚的目标。

您可以使用下面的代码替换您的 fillFile 函数:

for fileSize in fileSizes:
    with open(f'{fileSize}.txt', 'w') as fp:
        pop = range(0, fileSize + 1000)
        print(*random.choices(pop, k=fileSize), sep='\n', file=fp)

关于您的错误:对于每次迭代,您都覆盖了您的文件。你应该使用:

def fillFile(fileSize, fileName):
    with open(fileName + ".txt", "w") as file:
        for i in range(fileSize):
            # your code
            ...