Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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创建一个返回n个8位二进制字符串的文件_Python_File_Binary - Fatal编程技术网

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

Python创建一个返回n个8位二进制字符串的文件,python,file,binary,Python,File,Binary,目前,这就是我的python代码的样子。我正在尝试编写一个文件,该文件将返回数字,n,8位二进制字符串,但我被卡住了,因为该文件返回的二进制字符串的数量正确,但它们在字符串中不是随机的。即00000000或11111111 import random def eightBitStrings(n): eightBits = "eightBits.txt" outputFile = open(eightBits,"w") for element in range(n)

目前,这就是我的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()
任何建议都将不胜感激,谢谢

这应该有效:

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]范围内的数字,并将其转换为二进制,而不是逐位创建字符串。

问题在于转换为
int

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

但是,当您将这些浮点数转换为整数时,您将丢失小数,因此现在您只能生成0和1

然后,当您执行
str(randomNum)*8
时,您只需生成一个字符串,其中包含8个
randomNum
是什么,即0或1

如果您想保留当前代码,只需要额外的循环来生成8个介于0和1之间的随机数。这就是为什么最终得到的字符串不是80就是81

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()
(生成给定范围内的整数):


randomNum=str(randomNum)*8
仅重复同一字符八次。
import random

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

    for element in range(n):
       #join together 8 randomly selected integers between [0,1]
       randomNumber = "".join([str(random.randint(0,1)) for _ in range(8)])
       outputFile.write(randomNumber+"\n")
    outputFile.close()