Python创建一个返回n,number,8位二进制字符串的文件

2024-07-03 06:58:16 发布

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

目前我的python代码是这样的。我试图写一个文件来返回数字,n,8位二进制字符串,但是我被卡住了,因为文件返回的二进制字符串的数量是正确的,但是它们在字符串中不是随机的。即00000000或11111111。在

import random

def eightBitStrings(n):

    eightBits = "eightBits.txt"
    outputFile = open(eightBits,"w")


    for element in range(n):

        randomNum = int(random.random()*2)

        randomNum = str(randomNum) * 8

        outputFile.write(str(randomNum)+"\n")        


    outputFile.close()

如有任何建议,谢谢!在


Tags: 文件字符串代码importtxt数量def二进制
2条回答

问题是当您强制转换为int时。在

random()返回一个介于0和1之间的值。将这些值乘以2,就可以将范围扩大到[0,2)。在

但是,当你把这些浮点数转换成整数时,你就失去了小数,所以现在你只能生成0和1

然后,当你做str(randomNum)*8时,你只是在生成一个包含8个{}的字符串,它要么是0,要么是1。在

如果你想保留你当前的代码,你只需要一个额外的循环来生成8个0到1之间的随机数。这就是为什么你得到的字符串要么是8 0,要么是8 1

import random

def eightBitStrings(n):
    eightBits = "eightBits.txt"
    outputFile = open(eightBits,"w")

    for element in range(n):
        # create our string and we will randomly select 0 or 1 eight times
        s = ""
        for _ in range(8):
            # randomly generate 0 or 1 and append to our string
            randomNum = int(random.random()*2)
            s = s + str(randomNum)

        # output to file
        outputFile.write(s+"\n")        

    outputFile.close()

另一种方法是使用列表理解和random.randint()(它在给定范围内生成整数):

^{pr2}$

这应该是有效的:

import random

with open('eightBits.txt', 'w') as output_file:    
    for _ in range(n):
        random_num = random.randrange(255)
        output_file.write('{:08b}\n'.format(random_num))

您可以生成一个[0255]范围内的数字,然后将其转换为二进制,而不是逐位创建字符串。在

相关问题 更多 >