int
にキャストするときに問題が発生します。
random()
は、0と1の間の値を返します。これらの値に2を掛けて、範囲を[0,2]に拡張しました。
しかし、これらの浮動小数点数をintに変換すると、小数点が失われるため、0と1だけを生成することができます。
あなたがstr(randomNum)*8
を行うときに、あなただけのどんなrandomNum
の8を含む文字列を作っていることは0または1
、あなたの現在のコードを維持したい場合、あなたは、単に余分なループを必要とする、ありますあなたはどちらかが8 0または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()
8もう一つの方法は、所定の範囲内の整数を生成し、リスト内包表記とrandom.randint()
を(使用することですされている文字列で終わる理由です0と1の間の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()
'randomNum = str(randomNum)* 8 'という行は、単に同じ文字を8回繰り返すだけです。 –