random.randint在循环中使用相同的种子

yqkkidmi  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(463)

我一直对随机数很感兴趣,但是当我试图在循环中生成随机数时,就像下面的代码一样

success = 0
times = 0

for i in range(0,10):
    while success == 0:

        numbers = [0,0,0,0,0,0,0,0,0,0]

        for j in range(0,9):

            x = int(random.randint(0,9))
            numbers[x] = 1

            count = numbers.count(1)

        if count == 1:
            success = 1
        else:
            times += 1

    print(times)
    print(numbers)

输出:

17160
[0, 0, 0, 1, 0, 0, 0, 0, 0, 0]
17160
[0, 0, 0, 1, 0, 0, 0, 0, 0, 0]
17160
[0, 0, 0, 1, 0, 0, 0, 0, 0, 0]
17160
[0, 0, 0, 1, 0, 0, 0, 0, 0, 0]
17160
[0, 0, 0, 1, 0, 0, 0, 0, 0, 0]

等等我试着看一看它必须尝试的平均次数,但每次都得到相同的结果会毁掉它。有没有一种方法可以使用 rand 函数每次获取不同的随机数?

bzzcjhmw

bzzcjhmw1#

您的代码将重复,直到10个随机整数都设置在相同的位置 numbers . 那就定了 success 然后你再试一次。问题是你永远不会明白 success 所以 while success == 0: 不正确,循环不运行。解决办法是重新设置 success 在外环。

success = 0
times = 0

for i in range(0,10):
    while success == 0:

        numbers = [0,0,0,0,0,0,0,0,0,0]

        for j in range(0,6):

            x = int(random.randint(0,6))
            numbers[x] = 1

            count = numbers.count(1)

        if count == 1:
            success = 1
        else:
            times += 1

    print(times)
    print(numbers)
    success = 0                  # <== the fix

相关问题