Python random.randint始终生成正好一半偶数一半奇数的值
我正在做一些学习Python的练习,我注意到我在下面编写的代码总是产生完全相同数量的奇数和偶数值,不管我运行了多少次 它产生不同的列表值,那么它真的是随机的吗 有人能解释这是正常的还是一种对抗的方式吗 输出:Python random.randint始终生成正好一半偶数一半奇数的值,python,random,Python,Random,我正在做一些学习Python的练习,我注意到我在下面编写的代码总是产生完全相同数量的奇数和偶数值,不管我运行了多少次 它产生不同的列表值,那么它真的是随机的吗 有人能解释这是正常的还是一种对抗的方式吗 输出: import random numbers = [] even = 0 odd = 0 for x in range(100): numbers = numbers + [random.randint(1,9999)] for y in range(len(numbers))
import random
numbers = []
even = 0
odd = 0
for x in range(100):
numbers = numbers + [random.randint(1,9999)]
for y in range(len(numbers)):
if int(y) % 2 == 0 :
even = even + 1
elif int(y) % 2 == 1:
odd = odd + 1
print(str(numbers))
print('Odd is ' + str(odd))
print('Even is ' + str(even))
[834, 7719, 2279, 7403, 241, 7198, 4278, 2339, 7492, 928, 1372, 226, 8134, 165, 3999, 5367, 8807, 5838, 9637, 5850, 2945, 6419, 5131, 1597, 775, 2493, 518, 9175, 5980, 7705, 1259, 7884, 7220, 7746, 2144, 7542, 5939, 3435, 2723, 7887, 3978, 1483, 3709, 7447, 416, 5977, 303, 9011, 5707, 3085, 41, 1441, 4119, 677, 1048, 4399, 5737, 9032, 5629, 2953, 8979、4165、6820、1830、7193、5760、7446、6383、2937、9591、6700、9505、4896、2843、5994、5420、5063、1480、9187、5160、3191、1715、324、8124、5275、7265、5757、8441、4573、9946、8735、3345、4823、7777、7555、8140、4801、7034、1074、8325]
奇数是50
甚至是50岁
代码:
import random
numbers = []
even = 0
odd = 0
for x in range(100):
numbers = numbers + [random.randint(1,9999)]
for y in range(len(numbers)):
if int(y) % 2 == 0 :
even = even + 1
elif int(y) % 2 == 1:
odd = odd + 1
print(str(numbers))
print('Odd is ' + str(odd))
print('Even is ' + str(even))
你不是在那里迭代你随机生成的数字。你是在0到99之间的整数上迭代。其中正好一半是偶数,正好一半是奇数
你不是在那里迭代随机生成的数字。你是在迭代0到99之间的整数。其中有一半是偶数,一半是奇数。我已经修复了其中一条注释的代码,并且发现这是有效的 谢谢你的帮助
import random
numbers = []
even = 0
odd = 0
for x in range(100):
random.shuffle
numbers = numbers + [random.randint(1,9999)]
for y in range(len(numbers)):
if int(numbers[y]) % 2 == 0 :
even = even + 1
elif int(numbers[y]) % 2 == 1:
odd = odd + 1
print(str(numbers))
print('Odd is ' + str(odd))
print('Even is ' + str(even))
我已经修复了代码,由于其中一个评论,并已发现这项工作 谢谢你的帮助
import random
numbers = []
even = 0
odd = 0
for x in range(100):
random.shuffle
numbers = numbers + [random.randint(1,9999)]
for y in range(len(numbers)):
if int(numbers[y]) % 2 == 0 :
even = even + 1
elif int(numbers[y]) % 2 == 1:
odd = odd + 1
print(str(numbers))
print('Odd is ' + str(odd))
print('Even is ' + str(even))
您的算法是O(n*n),而它应该是O(n)。将numbers=numbers+…
替换为numbers。追加(…)
,其中…
是randint调用。您的算法是O(n*n),而它应该是O(n)。将numbers=numbers+…
替换为numbers。追加(…)
,其中…
是randint调用。将range(len(numbers))
和int(numbers[y])
替换为numbers
和y
。将range(len(numbers))
和int(numbers[y])
替换为numbers
和y
。