Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.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 random.randint始终生成正好一半偶数一半奇数的值_Python_Random - Fatal编程技术网

Python random.randint始终生成正好一半偶数一半奇数的值

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))

我正在做一些学习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)):
    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